diff options
author | Ludovic Courtès <ludo@gnu.org> | 2022-09-17 16:15:17 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2022-09-20 19:24:31 +0200 |
commit | 7a698da0d04d75f1c49f9ae9f358070acab0f781 (patch) | |
tree | b0d4b48b18fdcdfc822313b569e1e7c25fec4c6d | |
parent | 818220f1ccd57d14a62f07489b0e5e21837bb3dd (diff) |
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.
-rw-r--r-- | guix/read-print.scm | 7 | ||||
-rw-r--r-- | tests/read-print.scm | 5 |
2 files changed, 8 insertions, 4 deletions
diff --git a/guix/read-print.scm b/guix/read-print.scm index a5a1b708bf..c8849e767b 100644 --- a/guix/read-print.scm +++ b/guix/read-print.scm @@ -367,10 +367,9 @@ surrounding SYMBOL." (define (newline-form? symbol context) "Return true if parenthesized expressions starting with SYMBOL must be followed by a newline." - (match (vhash-assq symbol %newline-forms) - (#f #f) - ((_ . prefix) - (prefix? prefix context)))) + (let ((matches (vhash-foldq* cons '() symbol %newline-forms))) + (find (cut prefix? <> context) + matches))) (define (escaped-string str) "Return STR with backslashes and double quotes escaped. Everything else, in diff --git a/tests/read-print.scm b/tests/read-print.scm index ca3f3193f7..ea52a52145 100644 --- a/tests/read-print.scm +++ b/tests/read-print.scm @@ -294,6 +294,11 @@ mnopqrstuvwxyz.\")" ;; page break above end)") +(test-pretty-print "\ +(home-environment + (services + (list (service-type home-bash-service-type))))") + (test-pretty-print/sequence "\ ;;; This is a top-level comment. |