* keyboard.c (read_char): Don't apply previous change when current

buffer is unchanged by command execution.
This commit is contained in:
YAMAMOTO Mitsuharu 2010-01-12 19:10:51 +09:00
parent 60abb2870b
commit 4a00eacab8
2 changed files with 16 additions and 4 deletions

View file

@ -1,3 +1,8 @@
2010-01-12 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* keyboard.c (read_char): Don't apply previous change when current
buffer is unchanged by command execution.
2010-01-12 Jan Djärv <jan.h.d@swipnet.se>
* keyboard.c (read_char): Return after executing from special map.

View file

@ -3155,6 +3155,7 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
if (!NILP (tem))
{
struct buffer *prev_buffer = current_buffer;
#if 0 /* This shouldn't be necessary anymore. --lorentey */
int was_locked = single_kboard;
int count = SPECPDL_INDEX ();
@ -3178,10 +3179,16 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
unbind_to (count, Qnil);
#endif
/* The command may have changed the keymaps. Pretend there is input
in another keyboard and return. This will recalculate keymaps. */
c = make_number (-2);
goto exit;
if (current_buffer != prev_buffer)
{
/* The command may have changed the keymaps. Pretend there
is input in another keyboard and return. This will
recalculate keymaps. */
c = make_number (-2);
goto exit;
}
else
goto retry;
}
/* Handle things that only apply to characters. */