Fix execution of tool-bar commands read within minibuffer-error-handler

* src/keyboard.c (read_char): Arrange that the original event be
recorded when a posn is promoted to a prefix key and an END_TIME
is suppressing additions to this_command_keys.
This commit is contained in:
Po Lu 2024-06-21 15:12:07 +08:00
parent 8218aa14ed
commit 0ade6348f9

View file

@ -3135,8 +3135,23 @@ read_char (int commandflag, Lisp_Object map,
/* Change menu-bar to (menu-bar) as the event "position". */
POSN_SET_POSN (xevent_start (c), list1 (posn));
also_record = c;
Vunread_command_events = Fcons (c, Vunread_command_events);
/* Should a command call `sit-for', or another command that
provides a timespec to Fread_event and co., the original
event will not subsequently be entered into
this_command_keys unless Qno_record be specified below.
The same is the case in a number of other scenarios where
reread is true, but if so, event recording is to be
suppressed anyway. */
if (end_time)
Vunread_command_events = Fcons (Fcons (Qt, c),
Vunread_command_events);
else
{
also_record = c;
Vunread_command_events = Fcons (c, Vunread_command_events);
}
c = posn;
}
}