From 5ee9c60b788740e6447b869911b9a379734e6baa Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Thu, 18 May 2006 18:49:25 +0000 Subject: [PATCH] Reuse indentation strings. svn: r2970 --- collects/scribble/reader.ss | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/collects/scribble/reader.ss b/collects/scribble/reader.ss index 099746a111..c83668c462 100644 --- a/collects/scribble/reader.ss +++ b/collects/scribble/reader.ss @@ -29,6 +29,14 @@ (map (lambda (b) (cons (bytes-ref b 0) (bytes-ref b 1))) '(#"()" #"[]" #"{}" #"<>"))) + (define make-spaces + (let ([t (make-hash-table)]) + (lambda (n) + (hash-table-get t n + (lambda () + (let ([s (make-string n #\space)]) + (hash-table-put! t n s) s)))))) + (define (dispatcher char inp source-name line-num col-num position) (define (next-syntax readtable . plain?) (let ([read (if (and (pair? plain?) (car plain?)) @@ -151,8 +159,7 @@ (if (and (< curline line) (< mincol (syntax-column stx))) (list* stx (datum->syntax-object stx - (make-string - (- (syntax-column stx) mincol) #\space) + (make-spaces (- (syntax-column stx) mincol)) stx) r) (cons stx r)))))))))