From: Stefan Monnier Date: Tue, 29 Oct 2013 21:05:35 +0000 (-0400) Subject: * src/keyboard.c (command_loop_1): If command is nil, call `undefined'. X-Git-Url: https://git.hcoop.net/bpt/emacs.git/commitdiff_plain/4c9797cb77cee0d72084567ed8a7e97fcf41abff?hp=dcd163ac993757af6afa129b8625e3ea1c43973a * src/keyboard.c (command_loop_1): If command is nil, call `undefined'. * lisp/subr.el (undefined): Add missing behavior from the C code for unbound keys. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 988047c9bc..f15ba16da1 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,8 @@ 2013-10-29 Stefan Monnier + * subr.el (undefined): Add missing behavior from the C code for + unbound keys. + * rect.el: Use lexical-binding. Add new rectangular region support. (rectangle-mark): New command. (rectangle--region): New var. diff --git a/lisp/subr.el b/lisp/subr.el index ae1db6652d..0267366f1a 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -586,7 +586,15 @@ saving keyboard macros (see `edmacro-mode')." (defun undefined () "Beep to tell the user this binding is undefined." (interactive) - (ding)) + (ding) + (message "%s is undefined" (key-description (this-single-command-keys))) + (setq defining-kbd-macro nil) + (force-mode-line-update) + ;; If this is a down-mouse event, don't reset prefix-arg; + ;; pass it to the command run by the up event. + (setq prefix-arg + (when (memq 'down (event-modifiers last-command-event)) + current-prefix-arg))) ;; Prevent the \{...} documentation construct ;; from mentioning keys that run this command. diff --git a/src/ChangeLog b/src/ChangeLog index b06279b1a0..7dab8c0d64 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2013-10-29 Stefan Monnier + + * keyboard.c (command_loop_1): If command is nil, call `undefined'. + 2013-10-29 Paul Eggert * insdel.c: Fix minor problems found by static checking. diff --git a/src/keyboard.c b/src/keyboard.c index 0ff4cda034..6831f4d2ca 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -1510,27 +1510,8 @@ command_loop_1 (void) already_adjusted = 0; if (NILP (Vthis_command)) - { - /* nil means key is undefined. */ - Lisp_Object keys = Fvector (i, keybuf); - keys = Fkey_description (keys, Qnil); - bitch_at_user (); - message_with_string ("%s is undefined", keys, 0); - kset_defining_kbd_macro (current_kboard, Qnil); - update_mode_lines = 1; - /* If this is a down-mouse event, don't reset prefix-arg; - pass it to the command run by the up event. */ - if (EVENT_HAS_PARAMETERS (last_command_event)) - { - Lisp_Object breakdown - = parse_modifiers (EVENT_HEAD (last_command_event)); - int modifiers = XINT (XCAR (XCDR (breakdown))); - if (!(modifiers & down_modifier)) - kset_prefix_arg (current_kboard, Qnil); - } - else - kset_prefix_arg (current_kboard, Qnil); - } + /* nil means key is undefined. */ + call0 (Qundefined); else { /* Here for a command that isn't executed directly. */