((#\newline)
`(,column ,(+ 1 newlines) ,chars))
(else
- (let ((chars (case newlines
- ((0) chars)
- ((1) (cons #\space chars))
- (else
- (append (make-list newlines #\newline) chars))))
- (column (case newlines
- ((0) column)
- ((1) (+ 1 column))
- (else 0))))
+ (let* ((spaces (if (and (pair? chars) (eqv? (car chars) #\.)) 2 1))
+ (chars (case newlines
+ ((0) chars)
+ ((1)
+ (append (make-list spaces #\space) chars))
+ (else
+ (append (make-list newlines #\newline) chars))))
+ (column (case newlines
+ ((0) column)
+ ((1) (+ spaces column))
+ (else 0))))
(let ((chars (cons chr chars))
(column (+ 1 column)))
(if (> column width)
0
,(if (null? after)
before
- (append before (cons #\newline (cdr after)))))
+ (append before
+ (cons #\newline
+ (drop-while (cut eqv? #\space <>)
+ after)))))
`(,column 0 ,chars))) ; unbreakable
`(,column 0 ,chars)))))))))
10)
#\newline))
+(test-equal "fill-paragraph, two spaces after period"
+ "First line. Second line"
+ (fill-paragraph "First line.
+Second line" 24))
+
(test-equal "package-specification->name+version+output"
'(("guile" #f "out")
("guile" "2.0.9" "out")