diff options
| author | Po Lu | 2024-06-21 15:12:07 +0800 |
|---|---|---|
| committer | Po Lu | 2024-06-21 15:12:28 +0800 |
| commit | 0ade6348f92283e4fd0bc209f100d8fe1bb87d2a (patch) | |
| tree | bf8f3ef6d54b2d062d2383d1f64530ea6125bc7f /src | |
| parent | 8218aa14ed5fa2057695471f7b80e874d51bff39 (diff) | |
| download | emacs-0ade6348f92283e4fd0bc209f100d8fe1bb87d2a.tar.gz emacs-0ade6348f92283e4fd0bc209f100d8fe1bb87d2a.zip | |
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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/keyboard.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/keyboard.c b/src/keyboard.c index 3551a77a9c9..fb4d17ea066 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -3135,8 +3135,23 @@ read_char (int commandflag, Lisp_Object map, | |||
| 3135 | /* Change menu-bar to (menu-bar) as the event "position". */ | 3135 | /* Change menu-bar to (menu-bar) as the event "position". */ |
| 3136 | POSN_SET_POSN (xevent_start (c), list1 (posn)); | 3136 | POSN_SET_POSN (xevent_start (c), list1 (posn)); |
| 3137 | 3137 | ||
| 3138 | also_record = c; | 3138 | /* Should a command call `sit-for', or another command that |
| 3139 | Vunread_command_events = Fcons (c, Vunread_command_events); | 3139 | provides a timespec to Fread_event and co., the original |
| 3140 | event will not subsequently be entered into | ||
| 3141 | this_command_keys unless Qno_record be specified below. | ||
| 3142 | |||
| 3143 | The same is the case in a number of other scenarios where | ||
| 3144 | reread is true, but if so, event recording is to be | ||
| 3145 | suppressed anyway. */ | ||
| 3146 | |||
| 3147 | if (end_time) | ||
| 3148 | Vunread_command_events = Fcons (Fcons (Qt, c), | ||
| 3149 | Vunread_command_events); | ||
| 3150 | else | ||
| 3151 | { | ||
| 3152 | also_record = c; | ||
| 3153 | Vunread_command_events = Fcons (c, Vunread_command_events); | ||
| 3154 | } | ||
| 3140 | c = posn; | 3155 | c = posn; |
| 3141 | } | 3156 | } |
| 3142 | } | 3157 | } |