fixed some repl-printing related bugs that would make 'write' sensitive to pretty-print's parameters in drscheme's repl

svn: r18321
This commit is contained in:
Robby Findler 2010-02-24 17:35:09 +00:00
parent c5a3b9ee16
commit 50a6a585b1
6 changed files with 1521 additions and 1437 deletions

View File

@ -283,6 +283,8 @@
simple-settings->vector simple-settings->vector
simple-module-based-language-config-panel simple-module-based-language-config-panel
simple-module-based-language-convert-value
setup-printing-parameters
add-snip-value add-snip-value
setup-setup-values setup-setup-values

View File

@ -333,21 +333,23 @@
;; simple-module-based-language-render-value/format : TST settings port (union #f (snip% -> void)) (union 'infinity number) -> void ;; simple-module-based-language-render-value/format : TST settings port (union #f (snip% -> void)) (union 'infinity number) -> void
(define (simple-module-based-language-render-value/format value settings port width) (define (simple-module-based-language-render-value/format value settings port width)
(let ([converted-value (simple-module-based-language-convert-value value settings)]) (let ([converted-value (simple-module-based-language-convert-value value settings)])
(setup-printing-parameters (setup-printing-parameters
(λ () (λ ()
(cond (cond
[(simple-settings-insert-newlines settings) [(simple-settings-insert-newlines settings)
(if (number? width) (if (number? width)
(parameterize ([pretty-print-columns width]) (parameterize ([pretty-print-columns width])
(pretty-print converted-value port))
(pretty-print converted-value port))]
[else
(parameterize ([pretty-print-columns 'infinity])
(pretty-print converted-value port)) (pretty-print converted-value port))
(newline port)])) (pretty-print converted-value port))]
settings [else
width))) (parameterize ([pretty-print-columns 'infinity])
(pretty-print converted-value port))
(newline port)]))
settings
width)))
(define default-pretty-print-current-style-table (pretty-print-current-style-table))
;; setup-printing-parameters : (-> void) simple-settings number -> void ;; setup-printing-parameters : (-> void) simple-settings number -> void
(define (setup-printing-parameters thunk settings width) (define (setup-printing-parameters thunk settings width)
@ -366,6 +368,19 @@
0)] 0)]
[pretty-print-pre-print-hook (λ (val port) (void))] [pretty-print-pre-print-hook (λ (val port) (void))]
[pretty-print-post-print-hook (λ (val port) (void))] [pretty-print-post-print-hook (λ (val port) (void))]
[pretty-print-exact-as-decimal #f]
[pretty-print-depth #f]
[pretty-print-.-symbol-without-bars #f]
[pretty-print-show-inexactness #f]
[pretty-print-abbreviate-read-macros #t]
[pretty-print-current-style-table default-pretty-print-current-style-table]
[pretty-print-remap-stylable (λ (x) #f)]
[pretty-print-print-line
(lambda (line port offset width)
(when (and (number? width)
(not (eq? 0 line)))
(newline port))
0)]
[pretty-print-columns width] [pretty-print-columns width]
[pretty-print-size-hook [pretty-print-size-hook

File diff suppressed because it is too large Load Diff

View File

@ -184,16 +184,31 @@
(thunk))) (thunk)))
(define/override (render-value/format value settings port width) (define/override (render-value/format value settings port width)
(set-printing-parameters (teaching-language-render-value/format value settings port width))
settings
(lambda ()
(super render-value/format value settings port width))))
(define/override (render-value value settings port) (define/override (render-value value settings port)
(set-printing-parameters (teaching-language-render-value/format value settings port 'infinity))
(define/private (teaching-language-render-value/format value settings port width)
;; set drscheme's printing parameters
(drscheme:language:setup-printing-parameters
(λ ()
;; then adjust the settings for the teaching languages
(set-printing-parameters
settings
(λ ()
(let ([converted-value (drscheme:language:simple-module-based-language-convert-value value settings)])
(cond
[(drscheme:language:simple-settings-insert-newlines settings)
(if (number? width)
(parameterize ([pretty-print-columns width])
(pretty-print converted-value port))
(pretty-print converted-value port))]
[else
(parameterize ([pretty-print-columns 'infinity])
(pretty-print converted-value port))
(newline port)])))))
settings settings
(lambda () width))
(super render-value value settings port))))
(super-new))) (super-new)))

View File

@ -40,8 +40,10 @@
(real? x) (real? x)
(not (integer? x)))) (not (integer? x))))
(define default-pretty-print-current-style-table (pretty-print-current-style-table))
(define (do-printing pretty value port) (define (do-printing pretty value port)
(parameterize (;; these three handlers aren't used, but are set to override the user's settings (parameterize (;; these handlers aren't used, but are set to override the user's settings
[pretty-print-print-line (λ (line-number op old-line dest-columns) [pretty-print-print-line (λ (line-number op old-line dest-columns)
(when (and (not (equal? line-number 0)) (when (and (not (equal? line-number 0))
(not (equal? dest-columns 'infinity))) (not (equal? dest-columns 'infinity)))
@ -50,6 +52,19 @@
[pretty-print-pre-print-hook (λ (val port) (void))] [pretty-print-pre-print-hook (λ (val port) (void))]
[pretty-print-post-print-hook (λ (val port) (void))] [pretty-print-post-print-hook (λ (val port) (void))]
[pretty-print-columns 'infinity] [pretty-print-columns 'infinity]
[pretty-print-exact-as-decimal #f]
[pretty-print-depth #f]
[pretty-print-.-symbol-without-bars #f]
[pretty-print-show-inexactness #f]
[pretty-print-abbreviate-read-macros #t]
[pretty-print-current-style-table default-pretty-print-current-style-table]
[pretty-print-remap-stylable (λ (x) #f)]
[pretty-print-print-line
(lambda (line port offset width)
(when (and (number? width)
(not (eq? 0 line)))
(newline port))
0)]
[pretty-print-size-hook [pretty-print-size-hook
(λ (value display? port) (λ (value display? port)

View File

@ -972,6 +972,21 @@ This produces an ACK message
void void
void) void)
(mktest (format "~s\n~s"
`(require scheme/pretty)
`(parameterize ((pretty-print-exact-as-decimal #t)) (display 1/4)))
("1/4"
"1/4"
"1/4"
"1/4"
"1/4"
"1/4")
'interactions
#f
void
void)
(mktest (mktest
(string-append (string-append
"(define p (open-output-string))\n" "(define p (open-output-string))\n"