From: Richard M. Stallman Date: Fri, 28 Dec 2001 18:39:20 +0000 (+0000) Subject: (Flookup_key): Add error message for trying to bind [DEL], [RET], etc. X-Git-Url: https://git.hcoop.net/bpt/emacs.git/commitdiff_plain/2fae9111a4e782725fc1a38334bb14664efdd6e5 (Flookup_key): Add error message for trying to bind [DEL], [RET], etc. --- diff --git a/src/ChangeLog b/src/ChangeLog index aa59837294..8428636f6c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2001-12-28 Richard M. Stallman + + * keymap.c (Flookup_key): + Add error message for trying to bind [DEL], [RET], etc. + 2001-12-28 Gerd Moellmann * xterm.c (x_setup_relief_colors): Don't compute an image's diff --git a/src/keymap.c b/src/keymap.c index cc70f6331c..38cafb916b 100644 --- a/src/keymap.c +++ b/src/keymap.c @@ -48,6 +48,9 @@ Lisp_Object meta_map; /* The keymap used for globally bound Lisp_Object control_x_map; /* The keymap used for globally bound C-x-prefixed default commands */ +/* Alist of elements like (DEL . "\d"). */ +Lisp_Object exclude_keys; + /* was MinibufLocalMap */ Lisp_Object Vminibuffer_local_map; /* The keymap used by the minibuf for local @@ -1008,6 +1011,12 @@ the front of KEYMAP. */) if (CONSP (c) && lucid_event_type_list_p (c)) c = Fevent_convert_list (c); + if (SYMBOLP (c) && ! NILP (Fassoc (Fsymbol_name (c), exclude_keys))) + error ("To bind the key %s, use; use \"%s\", not [%s]", + XSYMBOL (c)->name->data, + XSTRING (XCDR (Fassoc (Fsymbol_name (c), exclude_keys)))->data, + XSYMBOL (c)->name->data); + if (INTEGERP (c) && (XINT (c) & meta_bit) && !metized) @@ -1025,7 +1034,7 @@ the front of KEYMAP. */) } if (!INTEGERP (c) && !SYMBOLP (c) && !CONSP (c)) - error ("Key sequence contains invalid events"); + error ("Key sequence contains invalid event"); if (idx == length) RETURN_UNGCPRO (store_in_keymap (keymap, c, def)); @@ -1098,6 +1107,9 @@ recognize the default bindings, just as `read-key-sequence' does. */) if (XINT (c) & 0x80 && STRINGP (key)) XSETINT (c, (XINT (c) | meta_modifier) & ~0x80); + if (!INTEGERP (c) && !SYMBOLP (c) && !CONSP (c)) + error ("Key sequence contains invalid event"); + cmd = access_keymap (keymap, c, t_ok, 0, 1); if (idx == length) RETURN_UNGCPRO (cmd); @@ -3370,6 +3382,15 @@ syms_of_keymap () Fset (intern ("ctl-x-map"), control_x_map); Ffset (intern ("Control-X-prefix"), control_x_map); + exclude_keys + = Fcons (Fcons (build_string ("DEL"), build_string ("\\d")), + Fcons (Fcons (build_string ("TAB"), build_string ("\\t")), + Fcons (Fcons (build_string ("RET"), build_string ("\\r")), + Fcons (Fcons (build_string ("ESC"), build_string ("\\e")), + Fcons (Fcons (build_string ("SPC"), build_string (" ")), + Qnil))))); + staticpro (&exclude_keys); + DEFVAR_LISP ("define-key-rebound-commands", &Vdefine_key_rebound_commands, doc: /* List of commands given new key bindings recently. This is used for internal purposes during Emacs startup;