diff --git a/collects/drscheme/private/unit.ss b/collects/drscheme/private/unit.ss index f1fe791ebb..35616075d7 100644 --- a/collects/drscheme/private/unit.ss +++ b/collects/drscheme/private/unit.ss @@ -13,13 +13,13 @@ module browser threading seems wrong. (module unit mzscheme (require (lib "contract.ss") (lib "unitsig.ss") - (lib "class.ss") + (lib "class.ss") (lib "file.ss") (lib "etc.ss") (lib "list.ss") (lib "port.ss") (lib "string-constant.ss" "string-constants") - (lib "framework.ss" "framework") + (lib "framework.ss" "framework") (lib "name-message.ss" "mrlib") (lib "bitmap-label.ss" "mrlib") @@ -604,10 +604,9 @@ module browser threading seems wrong. (λ (menu editor event) (when (is-a? editor text%) (let* ([canvas (send editor get-canvas)] - [frame (and canvas (send canvas get-frame))]) - (unless (is-a? frame -frame<%>) - (let* ([tab (send frame get-current-tab)] - [language-settings (send (send tab get-definitions-text) get-next-settings)] + [frame (and canvas (send canvas get-top-level-window))]) + (when (is-a? frame -frame<%>) + (let* ([language-settings (send (send frame get-definitions-text) get-next-settings)] [new-language (drscheme:language-configuration:language-settings-language language-settings)] [capability-info (send new-language capability-value 'drscheme:define-popup)]) (when capability-info @@ -1031,7 +1030,8 @@ module browser threading seems wrong. on-tab-change enable-evaluation disable-evaluation - get-definitions/interactions-panel-parent)) + get-definitions/interactions-panel-parent + register-capability-menu-item)) (define frame-mixin (mixin (drscheme:frame:<%> frame:searchable-text<%> frame:delegate<%> frame:open-here<%>) diff --git a/collects/framework/private/scheme.ss b/collects/framework/private/scheme.ss index 7b485cbac0..ae83c74a5a 100644 --- a/collects/framework/private/scheme.ss +++ b/collects/framework/private/scheme.ss @@ -1229,11 +1229,12 @@ ;; on the context where it is typed in. (define (insert-paren text) (let* ([pos (send text get-start-position)] - [change-to - (λ (c) - (send text insert c pos (+ pos 1)))]) - (send text begin-edit-sequence) - (send text insert #\[ pos (send text get-end-position)) + [real-char #\[] + [change-to (λ (c) (set! real-char c))] + [start-pos (send text get-start-position)] + [end-pos (send text get-end-position)]) + (send text begin-edit-sequence #f #f) + (send text insert "[" start-pos 'same #f) (when (eq? (send text classify-position pos) 'parenthesis) (let* ([before-whitespace-pos (send text skip-whitespace pos 'backward #t)] [backward-match (send text backward-match before-whitespace-pos 0)]) @@ -1320,7 +1321,9 @@ (change-to #\()]))] [else (change-to #\()])))) - (send text end-edit-sequence))) + (send text delete pos (+ pos 1) #f) + (send text end-edit-sequence) + (send text insert real-char start-pos end-pos))) ;; beginning-of-sequence? : text number -> boolean ;; determines if this position is at the beginning of a sequence