diff --git a/collects/framework/private/keymap.ss b/collects/framework/private/keymap.ss index efe7b5d8e4..cc37d40697 100644 --- a/collects/framework/private/keymap.ss +++ b/collects/framework/private/keymap.ss @@ -29,10 +29,9 @@ [sexp (and (file-exists? path) (parameterize ([read-accept-reader #t]) (call-with-input-file path read)))]) + (printf "sexp ~s\n" sexp) (match sexp - [`(module ,name ,(or `(lib "keybinding-lang.ss" "framework") - `(lib "framework/keybinding-lang.ss") - `framework/keybinding-lang) + [`(module ,name ,(? valid-key-bindings-lang?) ,@(x ...)) (let ([km (dynamic-require spec '#%keymap)]) (hash-set! user-keybindings-files spec km) @@ -41,6 +40,15 @@ (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)]))) + (define (spec->path p) (cond [(path? p) p]