diff options
-rw-r--r-- | guix/read-print.scm | 9 | ||||
-rw-r--r-- | tests/read-print.scm | 9 |
2 files changed, 17 insertions, 1 deletions
diff --git a/guix/read-print.scm b/guix/read-print.scm index 46b722eeed..fdc85c2693 100644 --- a/guix/read-print.scm +++ b/guix/read-print.scm @@ -529,6 +529,12 @@ FORMAT-VERTICAL-SPACE; a useful value of 'canonicalize-vertical-space'." (pair? tail))) (_ #f))) + (define (starts-with-line-comment? lst) + ;; Return true if LST starts with a line comment. + (match lst + ((x . _) (and (comment? x) (not (comment-margin? x)))) + (_ #f))) + (let loop ((indent indent) (column indent) (delimited? #t) ;true if comes after a delimiter @@ -710,7 +716,8 @@ FORMAT-VERTICAL-SPACE; a useful value of 'canonicalize-vertical-space'." (+ indent 1) (+ column (if delimited? 1 2)))) (newline? (or (newline-form? head context) - (list-of-lists? head tail))) ;'let' bindings + (list-of-lists? head tail) ;'let' bindings + (starts-with-line-comment? tail))) (context (cons head context))) (if overflow? (begin diff --git a/tests/read-print.scm b/tests/read-print.scm index 79a4101be6..952b3e6585 100644 --- a/tests/read-print.scm +++ b/tests/read-print.scm @@ -211,6 +211,15 @@ mnopqrstuvwxyz.\")" #:max-width 33) (test-pretty-print "\ +(list ;margin comment + a b c)") + +(test-pretty-print "\ +(list + ;; This is a line comment immediately following the list head. + #:test-flags #~(list \"-m\" \"not external and not samples\"))") + +(test-pretty-print "\ (modify-phases %standard-phases (replace 'build ;; Nicely indented in 'modify-phases' context. |