From 4239d22ded3affd545a9b8693632249a3f5b6f8a Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Wed, 8 Jul 2009 21:28:55 +0000 Subject: [PATCH] rename verbatim and unverbatim to disable-prefix and restore-prefix svn: r15411 --- collects/scribble/text/output.ss | 38 ++++++++------- .../scribblings/scribble/preprocessor.scrbl | 47 ++++++++++--------- src/foreign/ssc-utils.ss | 18 +++---- 3 files changed, 55 insertions(+), 48 deletions(-) diff --git a/collects/scribble/text/output.ss b/collects/scribble/text/output.ss index 238b25b4f6..e1464737e0 100644 --- a/collects/scribble/text/output.ss +++ b/collects/scribble/text/output.ss @@ -19,11 +19,11 @@ ;; system (when line counts are enabled) -- this is used to tell what part of a ;; prefix is already displayed. ;; -;; Each prefix is either an integer (for a number of spaces) or a -;; string. The prefix mechanism can be disabled by using #f for the -;; global prefix, and in this case the line prefix can have (cons pfx -;; lpfx) so it can be restored -- used by `verbatim' and `unverbatim' -;; resp. (This is different from 0 -- no prefix will be accumulated). +;; Each prefix is either an integer (for a number of spaces) or a string. The +;; prefix mechanism can be disabled by using #f for the global prefix, and in +;; this case the line prefix can have (cons pfx lpfx) so it can be restored -- +;; used by `disable-prefix' and `restore-prefix' resp. (This is different from +;; a 0 prefix -- #f means that no prefix will be accumulated). ;; (define (output x [p (current-output-port)]) ;; these are the global prefix and the one that is local to the current line @@ -68,7 +68,7 @@ ;; the basic printing unit: strings (define (output-string x) (define pfx (mcar pfxs)) - (if (not pfx) ; verbatim mode? + (if (not pfx) ; prefix disabled? (write-string x p) (let ([len (string-length x)] [nls (regexp-match-positions* #rx"\n" x)]) @@ -120,12 +120,14 @@ (let ([c (special-contents x)]) (case (special-flag x) [(splice) (for-each loop c)] - [(verbatim) ; save the previous pfxs + [(flush) ; useful before `disable-prefix' + (output-pfx (getcol) (mcar pfxs) (mcdr pfxs))] + [(disable-prefix) ; save the previous pfxs (let ([pfx (mcar pfxs)] [lpfx (mcdr pfxs)]) (set-mcar! pfxs #f) (set-mcdr! pfxs (cons pfx lpfx)) (for-each loop c) (set-mcar! pfxs pfx) (set-mcdr! pfxs lpfx))] - [(unverbatim) ; restore the previous pfxs + [(restore-prefix) ; restore the previous pfxs (let* ([pfx (mcar pfxs)] [lpfx (mcdr pfxs)] [npfx (pfx+col (if (and (not pfx) (pair? lpfx)) (pfx+ (car lpfx) (cdr lpfx)) @@ -133,8 +135,6 @@ (set-mcar! pfxs npfx) (set-mcdr! pfxs 0) (for-each loop c) (set-mcar! pfxs pfx) (set-mcdr! pfxs lpfx))] - [(flush) ; useful before verbatim - (output-pfx (getcol) (mcar pfxs) (mcdr pfxs))] [(prefix) (let* ([pfx (mcar pfxs)] [lpfx (mcdr pfxs)] [npfx (pfx+ (pfx+col (pfx+ pfx lpfx)) (car c))]) @@ -171,15 +171,21 @@ ;; special constructs -(provide splice verbatim unverbatim flush prefix) +(provide splice flush disable-prefix restore-prefix prefix) (define-struct special (flag contents)) -(define (splice . contents) (make-special 'splice contents)) -(define (verbatim . contents) (make-special 'verbatim contents)) -(define (unverbatim . contents) (make-special 'unverbatim contents)) -(define flush (make-special 'flush #f)) -(define (prefix pfx . contents) (make-special 'prefix (cons pfx contents))) +(define-syntax define-special + (syntax-rules () + [(_ (name x ...)) (define (name x ... . contents) + (make-special 'name (list* x ... contents)))] + [(_ name) (define name (make-special 'name #f))])) + +(define-special (splice)) +(define-special flush) +(define-special (disable-prefix)) +(define-special (restore-prefix)) +(define-special (prefix pfx)) (define make-spaces ; (efficiently) (let ([t (make-hasheq)] [v (make-vector 80 #f)]) diff --git a/collects/scribblings/scribble/preprocessor.scrbl b/collects/scribblings/scribble/preprocessor.scrbl index 008d1efe81..88b5ab2abb 100644 --- a/collects/scribblings/scribble/preprocessor.scrbl +++ b/collects/scribblings/scribble/preprocessor.scrbl @@ -718,9 +718,10 @@ number of values but avoid introducing a new indentation context. end }-| -The @scheme[verbatim] function disables all indentation printouts in -its contents, including the indentation before the verbatim value -itself. It is useful, for example, to print out CPP directives. +The @scheme[disable-prefix] function disables all indentation +printouts in its contents, including the indentation before the body +of the @scheme[disable-prefix] value itself. It is useful, for +example, to print out CPP directives. @example|-{#lang scribble/text @(define (((IFFOO . var) . expr1) . expr2) @@ -728,14 +729,14 @@ itself. It is useful, for example, to print out CPP directives. @list{[@e1, @e2]}) @list{var @var; - @verbatim{#ifdef FOO} + @disable-prefix{#ifdef FOO} @var = @array[expr1 expr2]; - @verbatim{#else} + @disable-prefix{#else} @var = @array[expr2 expr1]; - @verbatim{#endif}}) + @disable-prefix{#endif}}) function blah(something, something_else) { - @verbatim{#include "stuff.inc"} + @disable-prefix{#include "stuff.inc"} @@@IFFOO{i}{something}{something_else} } ---***--- @@ -752,8 +753,8 @@ itself. It is useful, for example, to print out CPP directives. } }-| -If there are values after a @scheme[verbatim] value on the same line, -they will get indented to the goal column (unless the output is +If there are values after a @scheme[disable-prefix] value on the same +line, they will get indented to the goal column (unless the output is already beyond it). @example|-{#lang scribble/text @@ -762,11 +763,11 @@ already beyond it). @body }}) @(define (ifdef cond then else) - @list{@verbatim{#}ifdef @cond + @list{@disable-prefix{#}ifdef @cond @then - @verbatim{#}else + @disable-prefix{#}else @else - @verbatim{#}endif}) + @disable-prefix{#}endif}) @thunk['do_stuff]{ init(); @@ -774,7 +775,7 @@ already beyond it). @list{var x = blah();} @thunk['blah]{ @ifdef["BLEHOS" - @list{@verbatim{#}include + @list{@disable-prefix{#}include bleh();} @list{error("no bleh");}] }] @@ -833,17 +834,17 @@ indentation in the contents gets added to the prefix. } }-| -Trying to combine @scheme[prefix] and @scheme[verbatim] is more useful -using an additional value: @scheme[flush] is bound to a value that -causes @scheme[output] to print the current indentation and prefix. -It makes it possible to get the ``ignored as a prefix'' property of -@scheme[verbatim] but only for a nested prefix. +When combining @scheme[prefix] and @scheme[disable-prefix] there is an +additional value that can be useful: @scheme[flush]. This is a value +that causes @scheme[output] to print the current indentation and +prefix. This makes it possible to get the ``ignored as a prefix'' +property of @scheme[disable-prefix] but only for a nested prefix. @example|-{#lang scribble/text @(define (comment . text) (list flush @prefix[" *"]{ - @verbatim{/*} @text */})) + @disable-prefix{/*} @text */})) function foo(x) { @comment{blah more blah @@ -876,12 +877,12 @@ It makes it possible to get the ``ignored as a prefix'' property of @(begin ;; This is a somewhat contrived example, showing how to use lists - ;; and verbatim to control the added prefix + ;; and disable-prefix to control the added prefix (define (item . text) ;; notes: the `flush' makes the prefix to that point print so the - ;; verbatim "* " is printed after it, which overwrites the "| " - ;; prefix - (list flush (prefix "| " (verbatim "* ") text))) + ;; disable-prefix "* " is printed after it, which overwrites the + ;; "| " prefix + (list flush (prefix "| " (disable-prefix "* ") text))) ;; note that a simple item with spaces is much easier: (define (simple . text) @list{* @text})) diff --git a/src/foreign/ssc-utils.ss b/src/foreign/ssc-utils.ss index 632ea852ff..395b584e86 100644 --- a/src/foreign/ssc-utils.ss +++ b/src/foreign/ssc-utils.ss @@ -19,20 +19,20 @@ (provide IFDEF IFNDEF) (define ((((IF*DEF token choose) . c) . t) . e) (if (null? e) - @list{@verbatim{#}@token @c + @list{@disable-prefix{#}@token @c @t - @verbatim{#}endif /* @c */} - @list{@verbatim{#}@token @c + @disable-prefix{#}endif /* @c */} + @list{@disable-prefix{#}@token @c @t - @verbatim{#}else /* @c @(choose '("undefined" . "defined")) */ + @disable-prefix{#}else /* @c @(choose '("undefined" . "defined")) */ @e - @verbatim{#}endif /* @c */})) + @disable-prefix{#}endif /* @c */})) (define IFDEF (IF*DEF "ifdef" car)) (define IFNDEF (IF*DEF "ifndef" cdr)) (provide DEFINE UNDEF) -(define (DEFINE . t) @list{@verbatim{#}define @t}) -(define (UNDEF . t) @list{@verbatim{#}undef @t}) +(define (DEFINE . t) @list{@disable-prefix{#}define @t}) +(define (UNDEF . t) @list{@disable-prefix{#}undef @t}) (provide scheme-id->c-name) (define (scheme-id->c-name str) @@ -52,12 +52,12 @@ (define (_cdefine name minargs maxargs . body) (define cname @list{foreign_@(scheme-id->c-name name)}) (cfunctions (cons (list name cname minargs maxargs) (cfunctions))) - @list{@verbatim{#define MYNAME "@name"} + @list{@disable-prefix{#define MYNAME "@name"} static Scheme_Object *@|cname|(int argc, Scheme_Object *argv[]) { @body } - @verbatim{#undef MYNAME}}) + @disable-prefix{#undef MYNAME}}) (provide cdefine) (define-syntax (cdefine stx) (syntax-case stx ()