From f7be366a3be1a30dacfc10f8a8bf15b1a5ec2cb5 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Mon, 22 Jan 2024 20:10:05 -0600 Subject: [PATCH] fix control-[ when in both automatic parens mode and fixup open parens is turned on closes #662 --- gui-lib/framework/private/racket.rkt | 10 +++++++--- gui-test/framework/tests/racket.rkt | 12 ++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/gui-lib/framework/private/racket.rkt b/gui-lib/framework/private/racket.rkt index 59610f948..9eb88080b 100644 --- a/gui-lib/framework/private/racket.rkt +++ b/gui-lib/framework/private/racket.rkt @@ -1621,9 +1621,13 @@ (send text begin-edit-sequence) (define start (send text get-start-position)) (define stop (send text get-end-position)) - (send text insert char start stop) - (when (and closer (preferences:get 'framework:automatic-parens)) - (send text insert closer (+ start 1) (+ start 1))) + (cond + [(and closer (preferences:get 'framework:automatic-parens)) + (send text insert closer stop stop) + (send text insert char start start) + (send text set-position (+ start 1))] + [else + (send text insert char start stop)]) (send text end-edit-sequence))) (define (map-pairs-keybinding-functions keymap opener closer diff --git a/gui-test/framework/tests/racket.rkt b/gui-test/framework/tests/racket.rkt index 593cd4d42..641f71ac8 100644 --- a/gui-test/framework/tests/racket.rkt +++ b/gui-test/framework/tests/racket.rkt @@ -880,6 +880,18 @@ (test-parens-behavior/full (format "~a-~a" (string-append open close) (car s)) before-and-open "" after #\backspace `(,result ,result))))) + (let () + (define fixup-open-parens (preferences:get 'framework:fixup-open-parens)) + (define k (new key-event% + [key-code #\[] + [control-down #t])) + (preferences:set 'framework:fixup-open-parens #t) + (test-parens-behavior/full 'open-parens + "abc" "def" "ghi" ; editor state: before, selected, after + (list k) ; key(s) pressed + '(["abc[" "ghi"] ; result state sep by cursor, no auto-parens + ["abc[" "def]ghi"])) ; result state with auto-parens + (preferences:set 'framework:fixup-open-parens fixup-open-parens)) #| for these, the key-event with meta-down doesn't seem to work... maybe a Mac OS issue; and may cause problems with these tests on another platform? .nah. |#