Commit d9ea7950 authored by Eli Zaretskii's avatar Eli Zaretskii
Browse files

Fix regression with 'recent-keys' and keyboard macros

* src/keyboard.c (record_char): Don't record in 'recent_keys'
events that come from executing keyboard macros.  (Bug#22674)
parent 903603f8
......@@ -3220,33 +3220,37 @@ record_char (Lisp_Object c)
else
store_kbd_macro_char (c);
if (!recorded)
{
total_keys += total_keys < NUM_RECENT_KEYS;
ASET (recent_keys, recent_keys_index, c);
if (++recent_keys_index >= NUM_RECENT_KEYS)
recent_keys_index = 0;
}
else if (recorded < 0)
/* recent_keys should not include events from keyboard macros. */
if (NILP (Vexecuting_kbd_macro))
{
/* We need to remove one or two events from recent_keys.
To do this, we simply put nil at those events and move the
recent_keys_index backwards over those events. Usually,
users will never see those nil events, as they will be
overwritten by the command keys entered to see recent_keys
(e.g. C-h l). */
while (recorded++ < 0 && total_keys > 0)
if (!recorded)
{
if (total_keys < NUM_RECENT_KEYS)
total_keys--;
if (--recent_keys_index < 0)
recent_keys_index = NUM_RECENT_KEYS - 1;
ASET (recent_keys, recent_keys_index, Qnil);
total_keys += total_keys < NUM_RECENT_KEYS;
ASET (recent_keys, recent_keys_index, c);
if (++recent_keys_index >= NUM_RECENT_KEYS)
recent_keys_index = 0;
}
else if (recorded < 0)
{
/* We need to remove one or two events from recent_keys.
To do this, we simply put nil at those events and move the
recent_keys_index backwards over those events. Usually,
users will never see those nil events, as they will be
overwritten by the command keys entered to see recent_keys
(e.g. C-h l). */
while (recorded++ < 0 && total_keys > 0)
{
if (total_keys < NUM_RECENT_KEYS)
total_keys--;
if (--recent_keys_index < 0)
recent_keys_index = NUM_RECENT_KEYS - 1;
ASET (recent_keys, recent_keys_index, Qnil);
}
}
}
num_nonmacro_input_events++;
num_nonmacro_input_events++;
}
/* Write c to the dribble file. If c is a lispy event, write
the event's symbol to the dribble file, in <brackets>. Bleaugh.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment