.
original commit: eca8bf7cc52a128657d2f227bcbf82ce9e966849
This commit is contained in:
parent
6606c64184
commit
984fb468b7
|
@ -37,6 +37,29 @@
|
||||||
mred^)
|
mred^)
|
||||||
|
|
||||||
(provide/contract/docs
|
(provide/contract/docs
|
||||||
|
|
||||||
|
(number-snip:make-repeating-decimal-snip
|
||||||
|
(number? boolean? . -> . (is-a?/c snip%))
|
||||||
|
(num show-prefix?)
|
||||||
|
|
||||||
|
"Makes a number snip that shows the decimal expansion for \\var{number}"
|
||||||
|
"The boolean indicates if a {\\tt \\#e} prefix appears"
|
||||||
|
"on the number."
|
||||||
|
""
|
||||||
|
"See also"
|
||||||
|
"@flink number-snip:number-snip:make-fraction-snip %"
|
||||||
|
".")
|
||||||
|
(number-snip:make-fraction-snip
|
||||||
|
(number? boolean? . -> . (is-a?/c snip%))
|
||||||
|
(num show-prefix-in-decimal-view?)
|
||||||
|
|
||||||
|
"Makes a number snip that shows a fractional view of \\var{number}."
|
||||||
|
"The boolean indicates if a {\\tt \\#e} prefix appears"
|
||||||
|
"on the number, when shown in the decimal state."
|
||||||
|
""
|
||||||
|
"See also"
|
||||||
|
"@flink drscheme:number-snip:make-repeating-decimal-snip %"
|
||||||
|
".")
|
||||||
(version:add-spec
|
(version:add-spec
|
||||||
(any? any? . -> . void?)
|
(any? any? . -> . void?)
|
||||||
(spec revision)
|
(spec revision)
|
||||||
|
|
|
@ -554,7 +554,7 @@
|
||||||
'framework:show-status-line
|
'framework:show-status-line
|
||||||
(lambda (p v)
|
(lambda (p v)
|
||||||
(update-info-visibility v)))]
|
(update-info-visibility v)))]
|
||||||
[define memory-cleanup void] ;; only for CVSers; used with memory-text
|
[define memory-cleanup void] ;; only for CVSers and nightly build users; used with memory-text
|
||||||
|
|
||||||
(rename [super-on-close on-close])
|
(rename [super-on-close on-close])
|
||||||
[define/override on-close
|
[define/override on-close
|
||||||
|
@ -626,7 +626,7 @@
|
||||||
[(<= n 99) (format "0~a" n)]
|
[(<= n 99) (format "0~a" n)]
|
||||||
[else (number->string n)]))
|
[else (number->string n)]))
|
||||||
|
|
||||||
; only for CVSers
|
; only for CVSers and nightly build users
|
||||||
(when show-memory-text?
|
(when show-memory-text?
|
||||||
(let* ([panel (make-object horizontal-panel% (get-info-panel) '(border))]
|
(let* ([panel (make-object horizontal-panel% (get-info-panel) '(border))]
|
||||||
[button (make-object button% (string-constant collect-button-label) panel
|
[button (make-object button% (string-constant collect-button-label) panel
|
||||||
|
@ -2310,14 +2310,16 @@
|
||||||
(define (get-editor%) text:searching%)
|
(define (get-editor%) text:searching%)
|
||||||
(super-instantiate ())))
|
(super-instantiate ())))
|
||||||
|
|
||||||
; to see printouts in memory debugging better.
|
|
||||||
(define memory-text% (class text% (super-new)))
|
(define memory-text% (class text% (super-new)))
|
||||||
(define memory-text (make-object memory-text%))
|
(define memory-text (make-object memory-text%))
|
||||||
(send memory-text hide-caret #t)
|
(send memory-text hide-caret #t)
|
||||||
(define show-memory-text?
|
(define show-memory-text?
|
||||||
(with-handlers ([not-break-exn?
|
(or (with-handlers ([not-break-exn?
|
||||||
(lambda (x) #f)])
|
(lambda (x) #f)])
|
||||||
(directory-exists? (build-path (collection-path "framework") "CVS"))))
|
(directory-exists? (collection-path "cvs-time-stamp")))
|
||||||
|
(with-handlers ([not-break-exn?
|
||||||
|
(lambda (x) #f)])
|
||||||
|
(directory-exists? (build-path (collection-path "framework") "CVS")))))
|
||||||
|
|
||||||
(define bday-click-canvas%
|
(define bday-click-canvas%
|
||||||
(class canvas%
|
(class canvas%
|
||||||
|
|
|
@ -22,6 +22,8 @@
|
||||||
|
|
||||||
(application-preferences-handler (lambda () (preferences:show-dialog)))
|
(application-preferences-handler (lambda () (preferences:show-dialog)))
|
||||||
|
|
||||||
|
(preferences:set-default 'framework:fraction-snip-style 'mixed (lambda (x) (memq x '(mixed improper))))
|
||||||
|
|
||||||
(preferences:set-default 'framework:standard-style-list:font-name
|
(preferences:set-default 'framework:standard-style-list:font-name
|
||||||
(get-family-builtin-face 'modern)
|
(get-family-builtin-face 'modern)
|
||||||
string?)
|
string?)
|
||||||
|
|
|
@ -79,8 +79,20 @@
|
||||||
framework:color-model-fun^
|
framework:color-model-fun^
|
||||||
framework:comment-box-fun^
|
framework:comment-box-fun^
|
||||||
framework:comment-box-class^
|
framework:comment-box-class^
|
||||||
framework:comment-box^)
|
framework:comment-box^
|
||||||
|
framework:number-snip^
|
||||||
|
framework:number-snip-fun^
|
||||||
|
framework:number-snip-class^)
|
||||||
|
|
||||||
|
(define-signature framework:number-snip-fun^
|
||||||
|
(make-repeating-decimal-snip
|
||||||
|
make-fraction-snip))
|
||||||
|
(define-signature framework:number-snip-class^
|
||||||
|
(snip-class%))
|
||||||
|
(define-signature framework:number-snip^
|
||||||
|
((open framework:number-snip-fun^)
|
||||||
|
(open framework:number-snip-class^)))
|
||||||
|
|
||||||
(define-signature framework:comment-box-fun^
|
(define-signature framework:comment-box-fun^
|
||||||
())
|
())
|
||||||
(define-signature framework:comment-box-class^
|
(define-signature framework:comment-box-class^
|
||||||
|
|
|
@ -20,7 +20,8 @@
|
||||||
[keymap : framework:keymap^]
|
[keymap : framework:keymap^]
|
||||||
[color-model : framework:color-model^]
|
[color-model : framework:color-model^]
|
||||||
[frame : framework:frame^]
|
[frame : framework:frame^]
|
||||||
[scheme : framework:scheme^])
|
[scheme : framework:scheme^]
|
||||||
|
[number-snip : framework:number-snip^])
|
||||||
|
|
||||||
(rename [-keymap% keymap%])
|
(rename [-keymap% keymap%])
|
||||||
|
|
||||||
|
@ -943,10 +944,10 @@
|
||||||
(super-on-local-char key)])))
|
(super-on-local-char key)])))
|
||||||
|
|
||||||
(define allow-tabify? #t)
|
(define allow-tabify? #t)
|
||||||
(rename [super-tabify-on-return? tabify-on-return?])
|
; (rename [super-tabify-on-return? tabify-on-return?])
|
||||||
(define/override (tabify-on-return?)
|
; (define/override (tabify-on-return?)
|
||||||
(and (super-tabify-on-return?)
|
; (and (super-tabify-on-return?)
|
||||||
allow-tabify?))
|
; allow-tabify?))
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;;
|
;;
|
||||||
|
@ -1163,7 +1164,6 @@
|
||||||
(define (out-close-proc)
|
(define (out-close-proc)
|
||||||
(void))
|
(void))
|
||||||
|
|
||||||
;; disable set-styles-sticky?
|
|
||||||
(define out-sd (make-object style-delta% 'change-normal))
|
(define out-sd (make-object style-delta% 'change-normal))
|
||||||
(define err-sd (make-object style-delta% 'change-italic))
|
(define err-sd (make-object style-delta% 'change-italic))
|
||||||
(define value-sd (make-object style-delta% 'change-normal))
|
(define value-sd (make-object style-delta% 'change-normal))
|
||||||
|
@ -1171,10 +1171,21 @@
|
||||||
(send err-sd set-delta-foreground (make-object color% 255 0 0))
|
(send err-sd set-delta-foreground (make-object color% 255 0 0))
|
||||||
(send value-sd set-delta-foreground (make-object color% 0 0 175))
|
(send value-sd set-delta-foreground (make-object color% 0 0 175))
|
||||||
|
|
||||||
(set! in-port (make-custom-input-port read-string-proc #f in-close-proc))
|
(set! in-port (make-custom-input-port read-string-proc
|
||||||
(set! out-port (make-custom-output-port #f (make-write-string-proc out-sd) flush-proc out-close-proc))
|
#f
|
||||||
(set! err-port (make-custom-output-port #f (make-write-string-proc err-sd) flush-proc out-close-proc))
|
in-close-proc))
|
||||||
(set! value-port (make-custom-output-port #f (make-write-string-proc value-sd) flush-proc out-close-proc)))
|
(set! out-port (make-custom-output-port #f
|
||||||
|
(make-write-string-proc out-sd)
|
||||||
|
flush-proc
|
||||||
|
out-close-proc))
|
||||||
|
(set! err-port (make-custom-output-port #f
|
||||||
|
(make-write-string-proc err-sd)
|
||||||
|
flush-proc
|
||||||
|
out-close-proc))
|
||||||
|
(set! value-port (make-custom-output-port #f
|
||||||
|
(make-write-string-proc value-sd)
|
||||||
|
flush-proc
|
||||||
|
out-close-proc)))
|
||||||
|
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
@ -1264,7 +1275,105 @@
|
||||||
(values fst (cdr lst)))]))])))
|
(values fst (cdr lst)))]))])))
|
||||||
|
|
||||||
(super-new)))
|
(super-new)))
|
||||||
|
#|
|
||||||
|
(define (drscheme-pretty-print-size-hook x _ port)
|
||||||
|
(and (or (eq? port this-out)
|
||||||
|
(eq? port this-err)
|
||||||
|
(eq? port this-result))
|
||||||
|
(cond
|
||||||
|
[(is-a? x sized-snip<%>) (send x get-character-width)]
|
||||||
|
[(is-a? x snip%)
|
||||||
|
(let ([dc (get-dc)]
|
||||||
|
[wbox (box 0)])
|
||||||
|
(send x get-extent dc 0 0 wbox #f #f #f #f #f)
|
||||||
|
(let-values ([(xw xh xa xd) (send dc get-text-extent "x")])
|
||||||
|
(max 1 (inexact->exact (ceiling (/ (unbox wbox) xw))))))]
|
||||||
|
[(syntax? x)
|
||||||
|
;; two spaces is about how big the turn down triangle
|
||||||
|
;; and the extra space accounts for. Of course, when
|
||||||
|
;; it is opened, this will be all wrong.
|
||||||
|
(+ 2 (string-length (format "~s" x)))]
|
||||||
|
[((use-number-snip) x)
|
||||||
|
(let ([number-snip-type ((which-number-snip) x)])
|
||||||
|
(cond
|
||||||
|
[(memq number-snip-type '(repeating-decimal
|
||||||
|
repeating-decimal-e
|
||||||
|
mixed-fraction
|
||||||
|
mixed-fraction-e))
|
||||||
|
1] ;; no idea of size yet
|
||||||
|
[else
|
||||||
|
(error 'which-number-snip
|
||||||
|
"unexpected result from parameter: ~e"
|
||||||
|
number-snip-type)]))]
|
||||||
|
[else #f])))
|
||||||
|
|
||||||
|
(define (drscheme-pretty-print-print-hook x _ port)
|
||||||
|
(let ([port-out-write
|
||||||
|
(cond
|
||||||
|
[(eq? port this-out) (lambda (x) (this-out-write x))]
|
||||||
|
[(eq? port this-err) (lambda (x) (this-err-write x))]
|
||||||
|
[(eq? port this-result) (lambda (x) (this-result-write x))]
|
||||||
|
;; this case should only happen if the user's program overrides the pretty-print-size-hook
|
||||||
|
;; and doesnt' override the pretty-print-print-hook to match.
|
||||||
|
[else #f])])
|
||||||
|
(if port-out-write
|
||||||
|
(let ([snip/str
|
||||||
|
(cond
|
||||||
|
[(syntax? x) (render-syntax/snip x)]
|
||||||
|
[((use-number-snip) x)
|
||||||
|
(let ([number-snip-type ((which-number-snip) x)])
|
||||||
|
(cond
|
||||||
|
[(eq? number-snip-type 'repeating-decimal)
|
||||||
|
(drscheme:number-snip:make-repeating-decimal-snip x #f)]
|
||||||
|
[(eq? number-snip-type 'repeating-decimal-e)
|
||||||
|
(drscheme:number-snip:make-repeating-decimal-snip x #t)]
|
||||||
|
[(eq? number-snip-type 'mixed-fraction)
|
||||||
|
(drscheme:number-snip:make-fraction-snip x #f)]
|
||||||
|
[(eq? number-snip-type 'mixed-fraction-e)
|
||||||
|
(drscheme:number-snip:make-fraction-snip x #t)]
|
||||||
|
[else
|
||||||
|
(error 'which-number-snip
|
||||||
|
"expected either 'repeating-decimal, 'repeating-decimal-e, 'mixed-fraction, or 'mixed-fraction-e got : ~e"
|
||||||
|
number-snip-type)]))]
|
||||||
|
[else x])])
|
||||||
|
(port-out-write snip/str))
|
||||||
|
(display x))))
|
||||||
|
|
||||||
|
;; setup-display/write-handlers : -> void
|
||||||
|
;; sets the port-display-handler and the port-write-handler
|
||||||
|
;; for the initial output port, initial error port and the
|
||||||
|
;; value port.
|
||||||
|
(define (setup-display/write-handlers)
|
||||||
|
(let* ([make-setup-handler
|
||||||
|
(lambda (port port-out-write)
|
||||||
|
(lambda (port-handler pretty)
|
||||||
|
(let ([original-handler (port-handler port)])
|
||||||
|
(port-handler
|
||||||
|
port
|
||||||
|
(rec drscheme-port-handler
|
||||||
|
(lambda (v p)
|
||||||
|
;; avoid looping by calling original-handler
|
||||||
|
;; for strings, since `pretty' calls write/display with
|
||||||
|
;; strings
|
||||||
|
(if (string? v)
|
||||||
|
(original-handler v p)
|
||||||
|
(parameterize ([pretty-print-columns 'infinity])
|
||||||
|
(pretty v p)))))))))]
|
||||||
|
|
||||||
|
[setup-handlers
|
||||||
|
(lambda (setup-handler)
|
||||||
|
(setup-handler port-display-handler pretty-display)
|
||||||
|
(setup-handler port-write-handler pretty-print))]
|
||||||
|
|
||||||
|
[setup-out-handler (make-setup-handler this-out (lambda (x) (this-out-write x)))]
|
||||||
|
[setup-err-handler (make-setup-handler this-err (lambda (x) (this-err-write x)))]
|
||||||
|
[setup-value-handler (make-setup-handler this-result (lambda (x) (this-result-write x)))])
|
||||||
|
(setup-handlers setup-out-handler)
|
||||||
|
(setup-handlers setup-err-handler)
|
||||||
|
(setup-handlers setup-value-handler)))
|
||||||
|
|
||||||
|
|#
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;;
|
;;
|
||||||
;; queues
|
;; queues
|
||||||
|
|
Loading…
Reference in New Issue
Block a user