2000-09-29 Gerd Moellmann <gerd@gnu.org>
+ * 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 <handa@etl.go.jp>
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
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. */
{
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. */
{
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))
{