aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorStefan Monnier2026-01-26 10:14:03 -0500
committerStefan Monnier2026-01-26 10:14:03 -0500
commit120a451c040011925c3c736058f2ce040e04d5fc (patch)
treee064e0de53c8e0ef730d601b722f6d09f66a1858 /src
parent9983b189356756448882b934a5c3e9c61c5438e6 (diff)
downloademacs-120a451c040011925c3c736058f2ce040e04d5fc.tar.gz
emacs-120a451c040011925c3c736058f2ce040e04d5fc.zip
(read_char_minibuf_menu_prompt): Fix bug#80146
* src/keyboard.c (read_char_minibuf_menu_prompt): Give priority to a binding in the map over the `menu_prompt_more_char` "binding". (follow_key): Move before new first use.
Diffstat (limited to 'src')
-rw-r--r--src/keyboard.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/keyboard.c b/src/keyboard.c
index 0bf134961a3..bc36d899250 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -10119,6 +10119,13 @@ read_char_x_menu_prompt (Lisp_Object map,
10119} 10119}
10120 10120
10121static Lisp_Object 10121static Lisp_Object
10122follow_key (Lisp_Object keymap, Lisp_Object key)
10123{
10124 return access_keymap (get_keymap (keymap, 0, 1),
10125 key, 1, 0, 1);
10126}
10127
10128static Lisp_Object
10122read_char_minibuf_menu_prompt (int commandflag, 10129read_char_minibuf_menu_prompt (int commandflag,
10123 Lisp_Object map) 10130 Lisp_Object map)
10124{ 10131{
@@ -10329,7 +10336,10 @@ read_char_minibuf_menu_prompt (int commandflag,
10329 if (!FIXNUMP (obj) || XFIXNUM (obj) == -2 10336 if (!FIXNUMP (obj) || XFIXNUM (obj) == -2
10330 || (! EQ (obj, menu_prompt_more_char) 10337 || (! EQ (obj, menu_prompt_more_char)
10331 && (!FIXNUMP (menu_prompt_more_char) 10338 && (!FIXNUMP (menu_prompt_more_char)
10332 || ! BASE_EQ (obj, make_fixnum (Ctl (XFIXNUM (menu_prompt_more_char))))))) 10339 || ! BASE_EQ (obj, make_fixnum (Ctl (XFIXNUM (menu_prompt_more_char))))))
10340 /* If 'menu_prompt_more_char' collides with a binding in the
10341 map, gives precedence to the map's binding (bug#80146). */
10342 || !NILP (follow_key (map, obj)))
10333 { 10343 {
10334 if (!NILP (KVAR (current_kboard, defining_kbd_macro))) 10344 if (!NILP (KVAR (current_kboard, defining_kbd_macro)))
10335 store_kbd_macro_char (obj); 10345 store_kbd_macro_char (obj);
@@ -10342,13 +10352,6 @@ read_char_minibuf_menu_prompt (int commandflag,
10342/* Reading key sequences. */ 10352/* Reading key sequences. */
10343 10353
10344static Lisp_Object 10354static Lisp_Object
10345follow_key (Lisp_Object keymap, Lisp_Object key)
10346{
10347 return access_keymap (get_keymap (keymap, 0, 1),
10348 key, 1, 0, 1);
10349}
10350
10351static Lisp_Object
10352active_maps (Lisp_Object first_event, Lisp_Object second_event) 10355active_maps (Lisp_Object first_event, Lisp_Object second_event)
10353{ 10356{
10354 Lisp_Object position 10357 Lisp_Object position