Mercurial > emacs
diff src/keyboard.c @ 4065:adf973a863dd
(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.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Mon, 12 Jul 1993 23:32:43 +0000 |
parents | df443e5f391e |
children | bea0be5ab35e |
line wrap: on
line diff
--- a/src/keyboard.c Mon Jul 12 22:13:12 1993 +0000 +++ b/src/keyboard.c Mon Jul 12 23:32:43 1993 +0000 @@ -242,6 +242,7 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ /* 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 @@ Qdisabled = intern ("disabled"); staticpro (&Qdisabled); + Qundefined = intern ("undefined"); + staticpro (&Qundefined); + Qpre_command_hook = intern ("pre-command-hook"); staticpro (&Qpre_command_hook);