From 912db5af78a4eab53921480e530d74c7768ab828 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Mon, 27 Dec 2004 19:53:24 +0000 Subject: [PATCH] . original commit: ab1bb138051de1969d1c9a381a3e0dd2e1412f2a --- collects/framework/keybinding-lang.ss | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/collects/framework/keybinding-lang.ss b/collects/framework/keybinding-lang.ss index a1f581b1..2099114a 100644 --- a/collects/framework/keybinding-lang.ss +++ b/collects/framework/keybinding-lang.ss @@ -32,13 +32,28 @@ (format "~a:~a" src pos))]) (send #%keymap add-function name (lambda (x y) + (let ([end-edit-sequence + (lambda () + (when (is-a? x editor<%>) + (let loop () + (when (send x in-edit-sequence?) + (send x end-edit-sequence) + (loop)))))]) (with-handlers ([exn:fail? (lambda (x) + (end-edit-sequence) (message-box (string-constant drscheme) (format (string-constant user-defined-keybinding-error) name (exn-message x))))]) - (proc x y)))) + (proc x y) + (when (is-a? x editor<%>) + (when (send x in-edit-sequence?) + (end-edit-sequence) + (message-box (string-constant drscheme) + (format (string-constant user-defined-keybinding-error) + name + "Editor left in edit-sequence")))))))) (send #%keymap map-function key name))) (define-syntax (keybinding stx) (syntax-case stx ()