From da393a6b197c35e8759e5834bb1a82bcc719723a Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 11 Apr 2012 11:48:39 -0600 Subject: [PATCH] add `#:line-number-sep' to `codeblock' original commit: c5e5a0349a9202e2f997eca16029835b9885d740 --- collects/scribble/private/manual-code.rkt | 21 ++++++++++++++++----- collects/scribblings/scribble/manual.scrbl | 10 +++++++--- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/collects/scribble/private/manual-code.rkt b/collects/scribble/private/manual-code.rkt index 2e9eb53f..e384ddc0 100644 --- 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 index 1f843b41..7a99dc35 100644 --- 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