# HG changeset patch # User Gerd Moellmann # Date 962031862 0 # Node ID 0c77254c90b8a944958dd57800311427efe2334d # Parent 3a3b1bda631d3a7cb79835855f21b8f897182c43 (get_keyelt): For menu-items containing a `:filter FILTER', apply FILTER to the menu-item's definition to get the real definition to use. diff -r 3a3b1bda631d -r 0c77254c90b8 src/keymap.c --- a/src/keymap.c Mon Jun 26 15:03:42 2000 +0000 +++ b/src/keymap.c Mon Jun 26 15:04:22 2000 +0000 @@ -578,15 +578,30 @@ /* If the keymap contents looks like (menu-item name . DEFN) or (menu-item name DEFN ...) then use DEFN. - This is a new format menu item. - */ + This is a new format menu item. */ else if (EQ (XCAR (object), Qmenu_item)) { if (CONSP (XCDR (object))) { + Lisp_Object tem; + object = XCDR (XCDR (object)); + tem = object; if (CONSP (object)) object = XCAR (object); + + /* If there's a `:filter FILTER', apply FILTER to the + menu-item's definition to get the real definition to + use. */ + for (; CONSP (tem) && CONSP (XCDR (tem)); tem = XCDR (tem)) + if (EQ (XCAR (tem), QCfilter)) + { + Lisp_Object filter; + filter = XCAR (XCDR (tem)); + filter = list2 (filter, list2 (Qquote, object)); + object = menu_item_eval_property (filter); + break; + } } else /* Invalid keymap */