diff --git a/collects/scribble/comment-reader.ss b/collects/scribble/comment-reader.ss index 755a2c1b10..8be38ec2db 100644 --- a/collects/scribble/comment-reader.ss +++ b/collects/scribble/comment-reader.ss @@ -32,6 +32,8 @@ (when (equal? #\; (peek-char port)) (read-char port) (loop))) + (when (equal? #\space (peek-char port)) + (read-char port)) `(code:comment (unsyntax (t @@ -53,18 +55,21 @@ (cond [(null? l) (if (null? s) null - (list (apply string-append (reverse s))))] - [(and (equal? " " (car l)) - (pair? s) - (equal? " " (car s))) - (append (loop null s) - (cons ''nbsp - (loop (cdr l) null)))] + (preserve-space (apply string-append (reverse s))))] [(string? (car l)) (loop (cdr l) (cons (car l) s))] [else (append (loop null s) (cons (car l) - (loop (cdr l) null)))])))) + (loop (cdr l) null)))]))) + + (define (preserve-space s) + (let ([m (regexp-match-positions #rx" +" s)]) + (if m + (append (preserve-space (substring s 0 (caar m))) + (list `(hspace ,(- (cdar m) (caar m)))) + (preserve-space (substring s (cdar m)))) + (list s))))) + diff --git a/collects/scribble/scheme.ss b/collects/scribble/scheme.ss index 98e89e6a75..af05f467d2 100644 --- a/collects/scribble/scheme.ss +++ b/collects/scribble/scheme.ss @@ -333,7 +333,8 @@ "does not have a single sub-form" c))) (advance c init-line!) - (out "; " comment-color) + (out ";" comment-color) + (out 'nbsp comment-color) (let ([v (syntax->datum (cadr (syntax->list c)))]) (if (paragraph? v) (map (lambda (v)