commit da393a6b197c35e8759e5834bb1a82bcc719723a
parent 743e0afbfb6ec623161eb28ff44afcb2f94c2a0e
Author: Matthew Flatt <mflatt@racket-lang.org>
Date: Wed, 11 Apr 2012 11:48:39 -0600
add `#:line-number-sep' to `codeblock'
original commit: c5e5a0349a9202e2f997eca16029835b9885d740
Diffstat:
2 files changed, 23 insertions(+), 8 deletions(-)
diff --git a/collects/scribble/private/manual-code.rkt b/collects/scribble/private/manual-code.rkt
@@ -29,7 +29,10 @@
#:name "#:context keyword")
(~optional (~seq #:line-numbers line-numbers:expr)
#:defaults ([line-numbers #'#f])
- #:name "#:line-numbers keyword"))
+ #:name "#:line-numbers keyword")
+ (~optional (~seq #:line-number-sep line-number-sep:expr)
+ #:defaults ([line-number-sep #'1])
+ #:name "#:line-number-sep keyword"))
...)
str ...)
#`(typeset-code str ...
@@ -43,7 +46,8 @@
(and (pair? (syntax-e v))
#`#'#,(car (syntax-e v))))
#'#f))
- #:line-numbers line-numbers)]))
+ #:line-numbers line-numbers
+ #:line-number-sep line-number-sep)]))
(define-syntax (codeblock stx) #`(code-inset #,(do-codeblock stx)))
(define-syntax (codeblock0 stx) (do-codeblock stx))
@@ -53,6 +57,7 @@
#:indent [indent 2]
#:keep-lang-line? [keep-lang-line? #t]
#:line-numbers [line-numbers #f]
+ #:line-number-sep [line-number-sep 1]
#:block? [block? #t]
. strs)
(let* ([xstr (apply string-append strs)]
@@ -162,6 +167,7 @@
(list->lines
indent
#:line-numbers line-numbers
+ #:line-number-sep line-number-sep
#:block? block?
(let loop ([pos 0]
[tokens tokens])
@@ -245,6 +251,7 @@
(define (list->lines indent-amt l
#:line-numbers line-numbers
+ #:line-number-sep line-number-sep
#:block? block?)
(define indent-elem (if (zero? indent-amt)
""
@@ -265,9 +272,13 @@
(define ln (format "~a" n))
(define lnl (string-length ln))
(define diff (- line-cntl lnl))
- (define l1 (list (tt ln) (hspace 1)))
- (cons (make-element 'smaller (make-element 'smaller
- (if (not (zero? diff)) (cons (hspace diff) l1) l1))) r))
+ (define l1 (list (tt ln) (hspace line-number-sep)))
+ (cons (make-element 'smaller
+ (make-element 'smaller
+ (if (not (zero? diff))
+ (cons (hspace diff) l1)
+ l1)))
+ r))
(define (make-line accum-line line-number)
(define rest (cons indent-elem accum-line))
diff --git a/collects/scribblings/scribble/manual.scrbl b/collects/scribblings/scribble/manual.scrbl
@@ -72,12 +72,14 @@ and @racket[code] versus @racket[racketbock] and
(code:line #:indent indent-expr)
(code:line #:expand expand-expr)
(code:line #:context context-expr)
- (code:line #:line-numbers line-number-expr)])
+ (code:line #:line-numbers line-number-expr)
+ (code:line #:line-number-sep line-number-sep-expr)])
#:contracts ([keep-expr any/c]
[indent-expr exact-nonnegative-integer?]
[expand-expr (or/c #f (syntax-object? . -> . syntax-object?))]
[context-expr syntax-object?]
- [line-number-expr (or/c #f exact-nonnegative-integer?)])]{
+ [line-number-expr (or/c #f exact-nonnegative-integer?)]
+ [line-number-sep-expr exact-nonnegative-integer?])]{
Parses the code formed by the strings produced by the
@racket[str-expr]s as a Racket module (roughly) and produces a
@@ -104,7 +106,9 @@ for-label bindings in the lexical environment of the syntax object
provided by @racket[context-expr]. The default @racket[context-expr]
has the same lexical context as the first @racket[str-expr].
When @racket[line-number-expr] is true, line number is enabled starting
-from @racket[line-number-expr].
+from @racket[line-number-expr], and @racket[line-number-sep] controls
+the separation (in spaces; defaults to 1) between the line numbers and
+code.
When @racket[expand-expr] produces a procedure, it is used to
macro-expand the parsed program, and syntax coloring is based on the