From d49a39892c5eccaa172dbc2262a6fb091ac7db5a Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Sun, 11 Oct 2009 20:56:36 +0000 Subject: [PATCH] removed work around for bug in s-exp reader and improved error message for user-defined keybindings in the wrong language svn: r16296 original commit: 1203aaa8861bca4fef0931790842289d147cc979 --- collects/framework/private/keymap.ss | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/collects/framework/private/keymap.ss b/collects/framework/private/keymap.ss index 9125865b..acfbe10d 100644 --- a/collects/framework/private/keymap.ss +++ b/collects/framework/private/keymap.ss @@ -30,23 +30,27 @@ (parameterize ([read-accept-reader #t]) (call-with-input-file path read)))]) (match sexp - [`(module ,name ,(? valid-keybindings-lang?) + [`(module ,name ,lang ,@(x ...)) - (let ([km (dynamic-require spec '#%keymap)]) - (hash-set! user-keybindings-files spec km) - (send user-keymap chain-to-keymap km #t))] + (cond + [(valid-keybindings-lang? lang) + (let ([km (dynamic-require spec '#%keymap)]) + (hash-set! user-keybindings-files spec km) + (send user-keymap chain-to-keymap km #t))] + [else + (error 'add-user-keybindings-file + (string-constant user-defined-keybinding-malformed-file/found-lang) + (path->string path) + lang)])] [else (error 'add-user-keybindings-file (string-constant user-defined-keybinding-malformed-file) (path->string path))]))))) (define (valid-keybindings-lang? x) - (let ([valid-langs - (list `(lib "keybinding-lang.ss" "framework") - `(lib "framework/keybinding-lang.ss") - `framework/keybinding-lang)]) - (cond - [(syntax? x) (member (syntax->datum x) valid-langs)] - [else (member x valid-langs)]))) + (member x + (list `(lib "keybinding-lang.ss" "framework") + `(lib "framework/keybinding-lang.ss") + `framework/keybinding-lang))) (define (spec->path p) (cond