diff --git a/drracket-core-lib/drracket/private/bindings-browser.rkt b/drracket-core-lib/drracket/private/bindings-browser.rkt index ac17223fa..59e018992 100644 --- a/drracket-core-lib/drracket/private/bindings-browser.rkt +++ b/drracket-core-lib/drracket/private/bindings-browser.rkt @@ -53,23 +53,22 @@ Marshalling (and hence the 'read' method of the snipclass omitted for fast proto (begin (parameterize ([current-output-port output-port] [pretty-print-columns 30]) - (for-each - (λ (binding-pair) - (let* ([stx (car binding-pair)] - [value (cadr binding-pair)]) - ; this totally destroys the 'output-port' abstraction. I don't know - ; how to enrich the notion of an output-port to get 'bold'ing to - ; work otherwise... - (let* ([before (send output-text last-position)]) - (pretty-print (syntax->datum stx)) - (let* ([post-newline (send output-text last-position)]) - (send output-text delete post-newline) ; delete the trailing \n. yuck! - (send output-text insert " ") - (send output-text change-style - (make-object style-delta% 'change-bold) - before (- post-newline 1))) - (pretty-print value)))) - bindings)) + (for ([binding-pair (in-list bindings)]) + (define stx (car binding-pair)) + (define value (cadr binding-pair)) + ; this totally destroys the 'output-port' abstraction. I don't know + ; how to enrich the notion of an output-port to get 'bold'ing to + ; work otherwise... + (define before (send output-text last-position)) + (pretty-print (syntax->datum stx)) + (let* ([post-newline (send output-text last-position)]) + (send output-text delete post-newline) ; delete the trailing \n. yuck! + (send output-text insert " ") + (send output-text change-style + (make-object style-delta% 'change-bold) + before + (- post-newline 1))) + (pretty-print value))) (send output-text delete (send output-text last-position)) ; delete final trailing \n (make-modern output-text)) @@ -88,17 +87,17 @@ Marshalling (and hence the 'read' method of the snipclass omitted for fast proto (bottom-inset 0)) (define inner-t (make-object text%)) - (define inner-es (instantiate editor-snip% () - (editor inner-t) - (with-border? #f) - (left-margin 0) - (top-margin 0) - (right-margin 0) - (bottom-margin 0) - (left-inset 0) - (top-inset 0) - (right-inset 0) - (bottom-inset 0))) + (define inner-es (new editor-snip% + (editor inner-t) + (with-border? #f) + (left-margin 0) + (top-margin 0) + (right-margin 0) + (bottom-margin 0) + (left-inset 0) + (top-inset 0) + (right-inset 0) + (bottom-inset 0))) (define details-shown? #t) @@ -134,17 +133,17 @@ Marshalling (and hence the 'read' method of the snipclass omitted for fast proto (send outer-t insert inner-es) (make-modern outer-t) - (send inner-t insert (instantiate editor-snip% () - (editor output-text) - (with-border? #f) - (left-margin 0) - (top-margin 0) - (right-margin 0) - (bottom-margin 0) - (left-inset 0) - (top-inset 0) - (right-inset 0) - (bottom-inset 0))) + (send inner-t insert (new editor-snip% + (editor output-text) + (with-border? #f) + (left-margin 0) + (top-margin 0) + (right-margin 0) + (bottom-margin 0) + (left-inset 0) + (top-inset 0) + (right-inset 0) + (bottom-inset 0))) (send inner-t change-style (make-object style-delta% 'change-alignment 'top) 0 2) (send output-text hide-caret #t) @@ -172,10 +171,7 @@ Marshalling (and hence the 'read' method of the snipclass omitted for fast proto (init-field [state 'up]) (define/override (copy) - (instantiate turn-snip% () - (on-up on-up) - (on-down on-down) - (state state))) + (new turn-snip% (on-up on-up) (on-down on-down) (state state))) (define/override (draw dc x y left top right bottom dx dy draw-caret) (define bitmap diff --git a/drracket-core-lib/drracket/private/language.rkt b/drracket-core-lib/drracket/private/language.rkt index 3f0cc2323..a33530467 100644 --- a/drracket-core-lib/drracket/private/language.rkt +++ b/drracket-core-lib/drracket/private/language.rkt @@ -233,25 +233,23 @@ ;; are put into the preferences dialog (which doesn't have an explicit ;; close action that the user takes) #:something-changed [something-changed void]) - (letrec ([parent (instantiate vertical-panel% () - (parent _parent) - (alignment '(center center)))] + (letrec ([parent (new vertical-panel% (parent _parent) (alignment '(center center)))] [input-panel (and (eq? *case-sensitive '?) - (instantiate group-box-panel% () - (label (string-constant input-syntax)) - (parent parent) - (alignment '(left center))))] + (new group-box-panel% + (label (string-constant input-syntax)) + (parent parent) + (alignment '(left center))))] - [dynamic-panel (instantiate group-box-panel% () - (label (string-constant dynamic-properties)) - (parent parent) - (alignment '(left center)))] + [dynamic-panel (new group-box-panel% + (label (string-constant dynamic-properties)) + (parent parent) + (alignment '(left center)))] - [output-panel (instantiate group-box-panel% () - (label (string-constant output-syntax)) - (parent parent) - (alignment '(left center)))] + [output-panel (new group-box-panel% + (label (string-constant output-syntax)) + (parent parent) + (alignment '(left center)))] [case-sensitive (and input-panel (make-object check-box% @@ -298,9 +296,9 @@ '(horizontal vertical-label))] [enable-fraction-style (lambda () - (let ([on? (member (send output-style get-selection) '(0 1))]) - (send fraction-style enable on?) - (something-changed)))] + (define on? (member (send output-style get-selection) '(0 1))) + (send fraction-style enable on?) + (something-changed))] [show-sharing (make-object check-box% (string-constant sharing-printing-label) output-panel @@ -362,28 +360,25 @@ ;; 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) - (let-values ([(converted-value write?) - (call-with-values - (lambda () - (simple-module-based-language-convert-value value settings)) - (case-lambda - [(converted-value) (values converted-value #t)] - [(converted-value write?) (values converted-value write?)]))]) - (let ([pretty-out (if write? pretty-write pretty-print)]) - (setup-printing-parameters - (λ () - (cond - [(simple-settings-insert-newlines settings) - (if (number? width) - (parameterize ([pretty-print-columns width]) - (pretty-out converted-value port)) - (pretty-out converted-value port))] - [else - (parameterize ([pretty-print-columns 'infinity]) - (pretty-out converted-value port)) - (newline port)])) - settings - width)))) + (define-values (converted-value write?) + (call-with-values (lambda () (simple-module-based-language-convert-value value settings)) + (case-lambda + [(converted-value) (values converted-value #t)] + [(converted-value write?) (values converted-value write?)]))) + (define pretty-out (if write? pretty-write pretty-print)) + (setup-printing-parameters (λ () + (cond + [(simple-settings-insert-newlines settings) + (if (number? width) + (parameterize ([pretty-print-columns width]) + (pretty-out converted-value port)) + (pretty-out converted-value port))] + [else + (parameterize ([pretty-print-columns 'infinity]) + (pretty-out converted-value port)) + (newline port)])) + settings + width)) (define default-pretty-print-current-style-table (pretty-print-current-style-table)) @@ -433,8 +428,8 @@ (send rdc set-smoothing 'aligned) (send rdc set-clipping-rect 0 0 aw ah) (draw-pict pict rdc - (+ (if (< w 0) aw 0) l-pad) - (+ (if (< h 0) ah 0) t-pad)) + (+ (if (negative? w) aw 0) l-pad) + (+ (if (negative? h) ah 0) t-pad)) (define recorded-datum (send rdc get-recorded-datum)) (new pict-snip:pict-snip% [w aw] [h ah] [d d] [a a] [recorded-datum recorded-datum])) @@ -621,49 +616,44 @@ (define first-time? (make-parameter #t)) (global-port-print-handler (λ (value port [depth 0]) - (let-values ([(converted-value write?) - (call-with-values - (lambda () (simple-module-based-language-convert-value value setting)) - (case-lambda - [(converted-value) (values converted-value #t)] - [(converted-value write?) (values converted-value write?)]))]) - (define cols - (cond - [(not (simple-settings-insert-newlines setting)) - 'infinity] - [(exact-integer? (print-value-columns)) - (print-value-columns)] - [else - (drracket:module-language:drracket-determined-width)])) - - (my-setup-printing-parameters - (λ () - (define (do-print) - (if write? - (pretty-write converted-value port) - (pretty-print converted-value port depth))) - (cond - [(first-time?) - (define orig-pretty-print-print-line (pretty-print-print-line)) - (define pppl - (if (simple-settings-insert-newlines setting) - ;; when drracket:module-language:drracket-determined-width - ;; is set, we need to compensate for the newline - ;; difference, so we do this to avoid that last newline - (if (equal? (drracket:module-language:drracket-determined-width) - 'infinity) - orig-pretty-print-print-line - (λ (new-line-number port len cols) - (when new-line-number - (orig-pretty-print-print-line new-line-number port len cols)))) - orig-pretty-print-print-line)) - (parameterize ([pretty-print-columns cols] - [pretty-print-print-line pppl] - [first-time? #f]) - (do-print))] - [else (do-print)])) - setting - 'infinity)))) + (define-values (converted-value write?) + (call-with-values (lambda () (simple-module-based-language-convert-value value setting)) + (case-lambda + [(converted-value) (values converted-value #t)] + [(converted-value write?) (values converted-value write?)]))) + (define cols + (cond + [(not (simple-settings-insert-newlines setting)) 'infinity] + [(exact-integer? (print-value-columns)) (print-value-columns)] + [else (drracket:module-language:drracket-determined-width)])) + + (my-setup-printing-parameters + (λ () + (define (do-print) + (if write? + (pretty-write converted-value port) + (pretty-print converted-value port depth))) + (cond + [(first-time?) + (define orig-pretty-print-print-line (pretty-print-print-line)) + (define pppl + (if (simple-settings-insert-newlines setting) + ;; when drracket:module-language:drracket-determined-width + ;; is set, we need to compensate for the newline + ;; difference, so we do this to avoid that last newline + (if (equal? (drracket:module-language:drracket-determined-width) 'infinity) + orig-pretty-print-print-line + (λ (new-line-number port len cols) + (when new-line-number + (orig-pretty-print-print-line new-line-number port len cols)))) + orig-pretty-print-print-line)) + (parameterize ([pretty-print-columns cols] + [pretty-print-print-line pppl] + [first-time? #f]) + (do-print))] + [else (do-print)])) + setting + 'infinity))) (current-inspector (make-inspector)) (read-case-sensitive (simple-settings-case-sensitive setting))))) @@ -727,10 +717,10 @@ (inherit get-language-position) (define/public (get-language-name) - (let ([pos (get-language-position)]) - (if (null? pos) - "<>" - (car (last-pair pos))))) + (define pos (get-language-position)) + (if (null? pos) + "<>" + (car (last-pair pos)))) (define/public (get-style-delta) #f) (define/override (on-execute setting run-in-user-thread) (super on-execute setting run-in-user-thread) @@ -761,47 +751,41 @@ init-code mred-launcher use-copy?) - (let ([executable-specs (create-executable-gui parent - program-filename - #t - (if (boolean? mred-launcher) - (if mred-launcher - 'mred - 'mzscheme) - #t))]) - (when executable-specs - (let* ([type (car executable-specs)] - [base (cadr executable-specs)] - [executable-filename (caddr executable-specs)] - [aux (cadddr executable-specs)] - [create-executable - (case type - [(launcher) create-module-based-launcher] - [(stand-alone) create-module-based-stand-alone-executable] - [(distribution) create-module-based-distribution])]) - (with-handlers ((exn:fail? (λ (msg) - (define sp (open-output-string)) - (parameterize ([current-error-port sp]) - (drracket:init:original-error-display-handler - (exn-message exn) - exn)) - (message-box - (string-constant drscheme) - (string-append - (string-constant error-creating-executable) - "\n\n" - (get-output-string sp)))))) - (create-executable - program-filename - executable-filename - module-language-spec - transformer-module-language-spec - init-code - (if (boolean? mred-launcher) - mred-launcher - (eq? base 'mred)) - use-copy? - #:aux aux)))))) + (define executable-specs + (create-executable-gui parent + program-filename + #t + (if (boolean? mred-launcher) + (if mred-launcher 'mred 'mzscheme) + #t))) + (when executable-specs + (let* ([type (car executable-specs)] + [base (cadr executable-specs)] + [executable-filename (caddr executable-specs)] + [aux (cadddr executable-specs)] + [create-executable (case type + [(launcher) create-module-based-launcher] + [(stand-alone) create-module-based-stand-alone-executable] + [(distribution) create-module-based-distribution])]) + (with-handlers ([exn:fail? + (λ (msg) + (define sp (open-output-string)) + (parameterize ([current-error-port sp]) + (drracket:init:original-error-display-handler (exn-message exn) exn)) + (message-box (string-constant drscheme) + (string-append (string-constant error-creating-executable) + "\n\n" + (get-output-string sp))))]) + (create-executable program-filename + executable-filename + module-language-spec + transformer-module-language-spec + init-code + (if (boolean? mred-launcher) + mred-launcher + (eq? base 'mred)) + use-copy? + #:aux aux))))) ;; create-executable-gui : (union #f (is-a?/c top-level-area-container<%>)) @@ -825,44 +809,41 @@ #f))] [min-width 400] [callback void])) - (define filename-browse-button (instantiate button% () - (label (string-constant browse...)) - (parent filename-panel) - (callback - (λ (x y) (browse-callback))))) - (define type/base-panel (instantiate vertical-panel% () - (parent dlg) - (stretchable-width #f))) + (define filename-browse-button (new button% + (label (string-constant browse...)) + (parent filename-panel) + (callback (λ (x y) (browse-callback))))) + (define type/base-panel (new vertical-panel% (parent dlg) (stretchable-width #f))) (define type-panel (make-object horizontal-panel% type/base-panel)) (define type-rb (and (boolean? show-type) - (instantiate radio-box% () - (label (string-constant executable-type)) - (choices (list (string-constant launcher-explanatory-label) - (string-constant stand-alone-explanatory-label) - (string-constant distribution-explanatory-label))) - (parent type-panel) - (callback (lambda (rb e) - (when embed-checkbox - (send embed-checkbox enable - (not (equal? 0 (send rb get-selection))))) - (preferences:set 'drracket:create-executable-gui-type - (case (send rb get-selection) - [(0) 'launcher] - [(1) 'stand-alone] - [(2) 'distribution])) - (reset-filename-suffix)))))) + (new radio-box% + (label (string-constant executable-type)) + (choices (list (string-constant launcher-explanatory-label) + (string-constant stand-alone-explanatory-label) + (string-constant distribution-explanatory-label))) + (parent type-panel) + (callback (lambda (rb e) + (when embed-checkbox + (send embed-checkbox enable + (not (equal? 0 (send rb get-selection))))) + (preferences:set 'drracket:create-executable-gui-type + (case (send rb get-selection) + [(0) 'launcher] + [(1) 'stand-alone] + [(2) 'distribution])) + (reset-filename-suffix)))))) (define base-panel (make-object horizontal-panel% type/base-panel)) (define base-rb (and (boolean? show-base) - (instantiate radio-box% () - (label (string-constant executable-base)) - (choices (list "Racket" "GRacket")) - (parent base-panel) - (callback (lambda (rb e) - (preferences:set 'drracket:create-executable-gui-base - (case (send rb get-selection) - [(0) 'racket] - [(1) 'gracket])) - (reset-filename-suffix)))))) + (new radio-box% + (label (string-constant executable-base)) + (choices (list "Racket" "GRacket")) + (parent base-panel) + (callback (lambda (rb e) + (preferences:set 'drracket:create-executable-gui-base + (case (send rb get-selection) + [(0) 'racket] + [(1) 'gracket])) + (reset-filename-suffix)))))) (define aux-panel (new group-box-panel% [label ""] @@ -923,13 +904,12 @@ [value (preferences:get 'drracket:create-executable-gui-embed-dlls?)]))) (define (reset-filename-suffix) - (let ([s (send filename-text-field get-value)]) - (unless (string=? s "") - (let ([new-s (default-executable-filename - (string->path s) - (current-mode) - (not (currently-mzscheme-binary?)))]) - (send filename-text-field set-value (path->string new-s)))))) + (define s (send filename-text-field get-value)) + (unless (string=? s "") + (let ([new-s (default-executable-filename (string->path s) + (current-mode) + (not (currently-mzscheme-binary?)))]) + (send filename-text-field set-value (path->string new-s))))) (define button-panel (instantiate horizontal-panel% () (parent dlg)