Age | Commit message (Expand) | Author |
2023-03-16 | read-print: 'read-with-comments' reads comments within gexps....Fixes <https://issues.guix.gnu.org/62059>.
Reported by Maxim Cournoyer <maxim.cournoyer@gmail.com>.
* guix/read-print.scm (read-with-comments): Special-case #~, #$, and #+.
* tests/read-print.scm: Add two tests.
| Ludovic Courtès |
2023-03-07 | read-print: Correctly handle comments that follow a list head....Fixes <https://issues.guix.gnu.org/61013>.
Reported by Maxim Cournoyer <maxim.cournoyer@gmail.com>.
* guix/read-print.scm (pretty-print-with-comments)[starts-with-line-comment?]:
New procedure.
Use it when printing a list.
* tests/read-print.scm: Add two tests.
| Ludovic Courtès |
2023-03-07 | read-print: Special-case channel-related forms....* guix/read-print.scm (%special-forms, %newline-forms): Add
channel-related forms.
| Ludovic Courtès |
2023-01-09 | read-print: Do not use extended notation when printing '1+', '1-', etc....* guix/read-print.scm (%special-non-extended-symbols): New variable.
(symbol->display-string): New procedure.
(pretty-print-with-comments): Use it in lieu of 'string->symbol'.
* tests/read-print.scm: Add test.
| Ludovic Courtès |
2022-12-20 | read-print: Add special forms....* guix/read-print.scm (%special-forms): Add 'define-configuration' and
'match-record'.
| Ludovic Courtès |
2022-10-17 | read-print: Recognize 'define-record-type' and 'define-record-type*'....* guix/read-print.scm (%special-forms): Add 'define-record-type' and
'define-record-type*'.
| Ludovic Courtès |
2022-10-02 | read-print: Fix indentation rule for 'match-lambda*'....Fixes <https://issues.guix.gnu.org/58040>.
Reported by Maxime Devos <maximedevos@telenet.be>.
* guix/read-print.scm (%special-forms): Set 'match-lambda*' parameter
count to 1.
| Ludovic Courtès |
2022-09-20 | read-print: Add rule for 'home-bash-configuration'....* guix/read-print.scm (%newline-forms): Add 'home-bash-configuration'.
| Ludovic Courtès |
2022-09-20 | read-print: Correctly support multiple same-named newline forms....Previously (home-environment (services ...)) would not be considered a
"newline form". This fixes it.
* guix/read-print.scm (newline-form?): Use 'vhash-foldq*' instead of
'vhash-assq' and iterate over candidates.
* tests/read-print.scm: Add test.
| Ludovic Courtès |
2022-09-02 | read-print: Improve declaration of integer bases....This is a followup to c3b1cfe76b7038f4030d7d207ffc417fed9a7ead.
* guix/read-print.scm (%symbols-followed-by-octal-integers)
(%symbols-followed-by-hexadecimal-integers): Remove.
* guix/read-print.scm (%integer-forms): New variable.
(integer->string)[form-base, octal?]: New procedures.
Rewrite accordingly.
| Ludovic Courtès |
2022-09-02 | read-print: Define forms for which \n, \t, etc. are not escaped....Previously, the pretty-printer would unconditionally leave everything
but double-quotes and backslashes unescaped when rendering a string.
With this change, the previous behavior only applies to forms listed in
%NATURAL-WHITESPACE-STRING-FORMS.
* guix/read-print.scm (%natural-whitespace-string-forms): New variable.
(printed-string): New procedure.
(pretty-print-with-comments): Use it instead of 'escaped-string'.
* tests/read-print.scm: Add test.
| Ludovic Courtès |
2022-09-01 | read-print: Guess the base to use for integers being printed....Fixes <https://issues.guix.gnu.org/57090>.
Reported by Christopher Rodriguez <yewscion@gmail.com>.
* guix/read-print.scm (%symbols-followed-by-octal-integers)
(%symbols-followed-by-hexadecimal-integers): New variables.
* guix/read-print.scm (integer->string): New procedure.
(pretty-print-with-comments): Use it.
* tests/read-print.scm: Add test.
| Ludovic Courtès |
2022-08-10 | read-print: Remove unused procedure....* guix/read-print.scm (combine-vertical-space): Remove.
| Ludovic Courtès |
2022-08-10 | read-print: Report missing closing parens instead of looping....Fixes <https://issues.guix.gnu.org/57093>.
Reported by Mohammed AMAR-BENSABER <renken@shione.net>.
Previously 'read-with-comments' would enter an infinite loop.
* guix/read-print.scm (read-with-comments)[missing-closing-paren-error]:
New procedure.
Call it when 'loop' as called from 'liip' returns EOF.
* tests/read-print.scm ("read-with-comments: missing closing paren"):
New test.
| Ludovic Courtès |
2022-08-08 | read-print: Add 'case' and 'cond' special forms....* guix/read-print.scm (%special-forms): Add 'case' and 'cond'.
* tests/read-print.scm: Add tests.
| Ludovic Courtès |
2022-08-08 | read-print: Support printing multi-line comments....* guix/read-print.scm (%not-newline): New variable.
(print-multi-line-comment): New procedure.
(pretty-print-with-comments): Use it.
* tests/read-print.scm ("pretty-print-with-comments, multi-line
comment"): New test.
| Ludovic Courtès |
2022-08-08 | read-print: 'canonicalize-comment' leaves top-level comments unchanged....This lets users use three leading semicolons, for instance, in top-level
comments.
* guix/read-print.scm (canonicalize-comment): Add INDENT parameter and
honor it.
(pretty-print-with-comments): Change default value of #:format-comment.
Call FORMAT-COMMENT with INDENT as the second argument.
* tests/read-print.scm: Adjust test accordingly.
| Ludovic Courtès |
2022-08-08 | read-print: Add code to read and write sequences of expressions/blanks....* guix/read-print.scm (read-with-comments): Add #:blank-line? and honor it.
(read-with-comments/sequence, pretty-print-with-comments/splice): New
procedures.
* tests/read-print.scm (test-pretty-print/sequence): New macro.
Add tests using it.
| Ludovic Courtès |
2022-08-08 | read-print: Recognize page breaks....* guix/read-print.scm (<page-break>, page-break?, page-break)
(char-set:whitespace-sans-page-break): New variables.
(space?): New procedure.
(read-vertical-space): Use it.
(read-until-end-of-line): New procedure.
(read-with-comments): Add #\page case.
(pretty-print-with-comments): Add 'page-break?' case.
* tests/read-print.scm ("read-with-comments: top-level page break"): New
test.
Add round-trip test with page break within an sexp.
| Ludovic Courtès |
2022-08-08 | read-print: Read and render vertical space....* guix/read-print.scm (<vertical-space>, vertical-space?)
(vertical-space, vertical-space-height): New variables.
(combine-vertical-space, canonicalize-vertical-space)
(read-vertical-space): New procedures.
(read-with-comments): Use it in the #\newline case.
(pretty-print-with-comments): Add #:format-vertical-space and honor it.
Add case for 'vertical-space?'.
* guix/scripts/style.scm (format-package-definition): Pass
#:format-vertical-space to 'object->string*'.
* tests/read-print.scm ("read-with-comments: list with blank line")
("read-with-comments: list with multiple blank lines")
("read-with-comments: top-level blank lines")
("pretty-print-with-comments, canonicalize-vertical-space"): New tests.
Add a couple of additional round-trip tests.
| Ludovic Courtès |
2022-08-08 | read-print: Introduce <blank> parent class of <comment>....* guix/read-print.scm (<blank>, blank?): New record type.
(<comment>): Redefine using the record interface.
(read-with-comments, pretty-print-with-comments): Change some uses of
'comment?' to 'blank?'.
* guix/scripts/style.scm (simplify-inputs)[simplify-expressions]: Use
'blank?' instead of 'comment?'.
| Ludovic Courtès |
2022-08-08 | read-print: Expose comment constructor....* guix/read-print.scm (<comment>): Rename constructor to
'string->comment'.
(comment): New procedure.
(read-with-comments, canonicalize-comment): Use 'string->comment'
instead of 'comment'.
| Ludovic Courtès |
2022-08-08 | read-print: Add System and Home special forms....* guix/read-print.scm (%special-forms): Add System and Home forms.
(%newline-forms): Add 'services'.
| Ludovic Courtès |
2022-08-08 | style: Move reader and printer to (guix read-print)....* guix/scripts/style.scm (<comment>, read-with-comments)
(vhashq, %special-forms, %newline-forms, prefix?)
(special-form-lead, newline-form?, escaped-string)
(string-width, canonicalize-comment, pretty-print-with-comments)
(object->string*): Move to...
* guix/read-print.scm: ... here. New file.
* guix/scripts/import.scm: Adjust accordingly.
* tests/style.scm: Move 'test-pretty-print' and tests to...
* tests/read-print.scm: ... here. New file.
* Makefile.am (MODULES): Add 'guix/read-print.scm'.
(SCM_TESTS): Add 'tests/read-print.scm'.
| Ludovic Courtès |