summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--guix/read-print.scm9
-rw-r--r--tests/read-print.scm9
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.