mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-09 13:10:57 -08:00
(Qundefined): New variable.
(syms_of_keyboard): Set up Qundefined. (menu_bar_items): Don't reverse the items. Process the maps in reverse order. (menu_bar_item): If definition is `undefined', delete any menu bar item already made, and don't make one.
This commit is contained in:
parent
039e9c8b9b
commit
e58aa38535
1 changed files with 22 additions and 4 deletions
|
|
@ -242,6 +242,7 @@ unsigned long last_event_timestamp;
|
|||
Lisp_Object Qself_insert_command;
|
||||
Lisp_Object Qforward_char;
|
||||
Lisp_Object Qbackward_char;
|
||||
Lisp_Object Qundefined;
|
||||
|
||||
/* read_key_sequence stores here the command definition of the
|
||||
key sequence that it reads. */
|
||||
|
|
@ -3186,7 +3187,7 @@ menu_bar_items ()
|
|||
|
||||
result = Qnil;
|
||||
|
||||
for (mapno = 0; mapno < nmaps; mapno++)
|
||||
for (mapno = nmaps - 1; mapno >= 0; mapno--)
|
||||
{
|
||||
if (! NILP (maps[mapno]))
|
||||
def = get_keyelt (access_keymap (maps[mapno], Qmenu_bar, 1, 0));
|
||||
|
|
@ -3227,6 +3228,9 @@ menu_bar_one_keymap (keymap, result)
|
|||
result = menu_bar_item (key, item_string,
|
||||
Fcdr (binding), result);
|
||||
}
|
||||
else if (EQ (binding, Qundefined))
|
||||
result = menu_bar_item (key, item_string,
|
||||
Fcdr (binding), result);
|
||||
}
|
||||
else if (XTYPE (item) == Lisp_Vector)
|
||||
{
|
||||
|
|
@ -3245,6 +3249,9 @@ menu_bar_one_keymap (keymap, result)
|
|||
result = menu_bar_item (key, item_string,
|
||||
Fcdr (binding), result);
|
||||
}
|
||||
else if (EQ (binding, Qundefined))
|
||||
result = menu_bar_item (key, item_string,
|
||||
Fcdr (binding), result);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3256,9 +3263,17 @@ static Lisp_Object
|
|||
menu_bar_item (key, item_string, def, result)
|
||||
Lisp_Object key, item_string, def, result;
|
||||
{
|
||||
Lisp_Object tem, elt;
|
||||
Lisp_Object tem;
|
||||
Lisp_Object enabled;
|
||||
|
||||
if (EQ (def, Qundefined))
|
||||
{
|
||||
/* If a map has an explicit nil as definition,
|
||||
discard any previously made menu bar item. */
|
||||
tem = Fassq (key, result);
|
||||
return Fdelq (tem, result);
|
||||
}
|
||||
|
||||
/* See if this entry is enabled. */
|
||||
enabled = Qt;
|
||||
|
||||
|
|
@ -3273,8 +3288,8 @@ menu_bar_item (key, item_string, def, result)
|
|||
|
||||
/* Add an entry for this key and string
|
||||
if there is none yet. */
|
||||
elt = Fassq (key, result);
|
||||
if (!NILP (enabled) && NILP (elt))
|
||||
tem = Fassq (key, result);
|
||||
if (!NILP (enabled) && NILP (tem))
|
||||
result = Fcons (Fcons (key, Fcons (item_string, Qnil)), result);
|
||||
|
||||
return result;
|
||||
|
|
@ -4910,6 +4925,9 @@ syms_of_keyboard ()
|
|||
Qdisabled = intern ("disabled");
|
||||
staticpro (&Qdisabled);
|
||||
|
||||
Qundefined = intern ("undefined");
|
||||
staticpro (&Qundefined);
|
||||
|
||||
Qpre_command_hook = intern ("pre-command-hook");
|
||||
staticpro (&Qpre_command_hook);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue