From d93183d23eab99e8dd53c89ba296dc3bddd69471 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Fri, 21 Jun 2024 15:12:07 +0800 Subject: [PATCH] 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. (cherry picked from commit 0ade6348f92283e4fd0bc209f100d8fe1bb87d2a) --- src/keyboard.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/keyboard.c b/src/keyboard.c index 6dfe6723aec..303af00550b 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -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; } } -- 2.39.2