add #:line-number-sep' to
codeblock'
original commit: c5e5a0349a9202e2f997eca16029835b9885d740
This commit is contained in:
parent
743e0afbfb
commit
da393a6b19
|
@ -29,7 +29,10 @@
|
||||||
#:name "#:context keyword")
|
#:name "#:context keyword")
|
||||||
(~optional (~seq #:line-numbers line-numbers:expr)
|
(~optional (~seq #:line-numbers line-numbers:expr)
|
||||||
#:defaults ([line-numbers #'#f])
|
#: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 ...)
|
str ...)
|
||||||
#`(typeset-code str ...
|
#`(typeset-code str ...
|
||||||
|
@ -43,7 +46,8 @@
|
||||||
(and (pair? (syntax-e v))
|
(and (pair? (syntax-e v))
|
||||||
#`#'#,(car (syntax-e v))))
|
#`#'#,(car (syntax-e v))))
|
||||||
#'#f))
|
#'#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 (codeblock stx) #`(code-inset #,(do-codeblock stx)))
|
||||||
(define-syntax (codeblock0 stx) (do-codeblock stx))
|
(define-syntax (codeblock0 stx) (do-codeblock stx))
|
||||||
|
@ -53,6 +57,7 @@
|
||||||
#:indent [indent 2]
|
#:indent [indent 2]
|
||||||
#:keep-lang-line? [keep-lang-line? #t]
|
#:keep-lang-line? [keep-lang-line? #t]
|
||||||
#:line-numbers [line-numbers #f]
|
#:line-numbers [line-numbers #f]
|
||||||
|
#:line-number-sep [line-number-sep 1]
|
||||||
#:block? [block? #t]
|
#:block? [block? #t]
|
||||||
. strs)
|
. strs)
|
||||||
(let* ([xstr (apply string-append strs)]
|
(let* ([xstr (apply string-append strs)]
|
||||||
|
@ -162,6 +167,7 @@
|
||||||
(list->lines
|
(list->lines
|
||||||
indent
|
indent
|
||||||
#:line-numbers line-numbers
|
#:line-numbers line-numbers
|
||||||
|
#:line-number-sep line-number-sep
|
||||||
#:block? block?
|
#:block? block?
|
||||||
(let loop ([pos 0]
|
(let loop ([pos 0]
|
||||||
[tokens tokens])
|
[tokens tokens])
|
||||||
|
@ -245,6 +251,7 @@
|
||||||
|
|
||||||
(define (list->lines indent-amt l
|
(define (list->lines indent-amt l
|
||||||
#:line-numbers line-numbers
|
#:line-numbers line-numbers
|
||||||
|
#:line-number-sep line-number-sep
|
||||||
#:block? block?)
|
#:block? block?)
|
||||||
(define indent-elem (if (zero? indent-amt)
|
(define indent-elem (if (zero? indent-amt)
|
||||||
""
|
""
|
||||||
|
@ -265,9 +272,13 @@
|
||||||
(define ln (format "~a" n))
|
(define ln (format "~a" n))
|
||||||
(define lnl (string-length ln))
|
(define lnl (string-length ln))
|
||||||
(define diff (- line-cntl lnl))
|
(define diff (- line-cntl lnl))
|
||||||
(define l1 (list (tt ln) (hspace 1)))
|
(define l1 (list (tt ln) (hspace line-number-sep)))
|
||||||
(cons (make-element 'smaller (make-element 'smaller
|
(cons (make-element 'smaller
|
||||||
(if (not (zero? diff)) (cons (hspace diff) l1) l1))) r))
|
(make-element 'smaller
|
||||||
|
(if (not (zero? diff))
|
||||||
|
(cons (hspace diff) l1)
|
||||||
|
l1)))
|
||||||
|
r))
|
||||||
|
|
||||||
(define (make-line accum-line line-number)
|
(define (make-line accum-line line-number)
|
||||||
(define rest (cons indent-elem accum-line))
|
(define rest (cons indent-elem accum-line))
|
||||||
|
|
|
@ -72,12 +72,14 @@ and @racket[code] versus @racket[racketbock] and
|
||||||
(code:line #:indent indent-expr)
|
(code:line #:indent indent-expr)
|
||||||
(code:line #:expand expand-expr)
|
(code:line #:expand expand-expr)
|
||||||
(code:line #:context context-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]
|
#:contracts ([keep-expr any/c]
|
||||||
[indent-expr exact-nonnegative-integer?]
|
[indent-expr exact-nonnegative-integer?]
|
||||||
[expand-expr (or/c #f (syntax-object? . -> . syntax-object?))]
|
[expand-expr (or/c #f (syntax-object? . -> . syntax-object?))]
|
||||||
[context-expr 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
|
Parses the code formed by the strings produced by the
|
||||||
@racket[str-expr]s as a Racket module (roughly) and produces a
|
@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]
|
provided by @racket[context-expr]. The default @racket[context-expr]
|
||||||
has the same lexical context as the first @racket[str-expr].
|
has the same lexical context as the first @racket[str-expr].
|
||||||
When @racket[line-number-expr] is true, line number is enabled starting
|
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
|
When @racket[expand-expr] produces a procedure, it is used to
|
||||||
macro-expand the parsed program, and syntax coloring is based on the
|
macro-expand the parsed program, and syntax coloring is based on the
|
||||||
|
|
Loading…
Reference in New Issue
Block a user