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.master
parent
11f6bdc547
commit
0a37921d85
|
@ -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
|
||||
|
|
|
@ -210,6 +210,15 @@ mnopqrstuvwxyz.\")"
|
|||
\"abcdefghijklmnopqrstuvwxyz\")"
|
||||
#: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
|
||||
|
|
Reference in New Issue