From 25126faa090a88cf01bdeee642876ebdf9523408 Mon Sep 17 00:00:00 2001 From: Gerd Moellmann Date: Fri, 29 Sep 2000 12:42:01 +0000 Subject: [PATCH] (menu_bar_one_keymap): If KEYMAP is a symbol, use its function definition. (tool_bar_items): Likewise. --- src/ChangeLog | 4 ++++ src/keyboard.c | 29 ++++++++++++++++++----------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index e0a9721c5e4..01ccd9ce9f9 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,9 @@ 2000-09-29 Gerd Moellmann + * keyboard.c (menu_bar_one_keymap): If KEYMAP is a symbol, + use its function definition. + (tool_bar_items): Likewise. + * lisp.h (fatal): Declare NO_RETURN. 2000-09-29 Kenichi Handa diff --git a/src/keyboard.c b/src/keyboard.c index 8199667bf07..501174faaca 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -6139,8 +6139,8 @@ map_prompt (map) return Qnil; } -static void menu_bar_item (); -static void menu_bar_one_keymap (); +static void menu_bar_item P_ ((Lisp_Object, Lisp_Object)); +static void menu_bar_one_keymap P_ ((Lisp_Object)); /* These variables hold the vector under construction within menu_bar_items and its subroutines, and the current index @@ -6236,16 +6236,13 @@ menu_bar_items (old) result = Qnil; for (mapno = nmaps - 1; mapno >= 0; mapno--) - { - if (! NILP (maps[mapno])) + if (!NILP (maps[mapno])) + { def = get_keyelt (access_keymap (maps[mapno], Qmenu_bar, 1, 0), 0); - else - def = Qnil; - - tem = Fkeymapp (def); - if (!NILP (tem)) - menu_bar_one_keymap (def); - } + tem = Fkeymapp (def); + if (!NILP (tem)) + menu_bar_one_keymap (def); + } /* Move to the end those items that should be at the end. */ @@ -6309,6 +6306,11 @@ menu_bar_one_keymap (keymap) { Lisp_Object tail, item; + /* If KEYMAP is a symbol, its function definition is the keymap + to use. */ + if (SYMBOLP (keymap)) + keymap = indirect_function (keymap); + menu_bar_one_keymap_changed_items = Qnil; /* Loop over all keymap entries that have menu strings. */ @@ -6901,6 +6903,11 @@ tool_bar_items (reuse, nitems) { Lisp_Object tail; + /* If KEYMAP is a symbol, its function definition is the + keymap to use. */ + if (SYMBOLP (keymap)) + keymap = indirect_function (keymap); + /* KEYMAP is a list `(keymap (KEY . BINDING) ...)'. */ for (tail = keymap; CONSP (tail); tail = XCDR (tail)) { -- 2.39.5