aboutsummaryrefslogtreecommitdiffstats
path: root/src/keymap.c
diff options
context:
space:
mode:
authorGerd Moellmann2000-06-26 15:05:03 +0000
committerGerd Moellmann2000-06-26 15:05:03 +0000
commit3fc720e4bde612fa3943745d06bd2968c123e561 (patch)
tree995e693e4cbf85e0b681f21f5fa7959d5c2ed724 /src/keymap.c
parent1425dcb619137a3cbd8393fd0db0fba1a5e0b059 (diff)
downloademacs-3fc720e4bde612fa3943745d06bd2968c123e561.tar.gz
emacs-3fc720e4bde612fa3943745d06bd2968c123e561.zip
(get_keyelt): For menu-items containing a `:filter
FILTER', apply FILTER to the menu-item's definition to get the real definition to use.
Diffstat (limited to 'src/keymap.c')
-rw-r--r--src/keymap.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/keymap.c b/src/keymap.c
index 371b6571c76..11d8ab860a5 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -578,15 +578,30 @@ get_keyelt (object, autoload)
578 578
579 /* If the keymap contents looks like (menu-item name . DEFN) 579 /* If the keymap contents looks like (menu-item name . DEFN)
580 or (menu-item name DEFN ...) then use DEFN. 580 or (menu-item name DEFN ...) then use DEFN.
581 This is a new format menu item. 581 This is a new format menu item. */
582 */
583 else if (EQ (XCAR (object), Qmenu_item)) 582 else if (EQ (XCAR (object), Qmenu_item))
584 { 583 {
585 if (CONSP (XCDR (object))) 584 if (CONSP (XCDR (object)))
586 { 585 {
586 Lisp_Object tem;
587
587 object = XCDR (XCDR (object)); 588 object = XCDR (XCDR (object));
589 tem = object;
588 if (CONSP (object)) 590 if (CONSP (object))
589 object = XCAR (object); 591 object = XCAR (object);
592
593 /* If there's a `:filter FILTER', apply FILTER to the
594 menu-item's definition to get the real definition to
595 use. */
596 for (; CONSP (tem) && CONSP (XCDR (tem)); tem = XCDR (tem))
597 if (EQ (XCAR (tem), QCfilter))
598 {
599 Lisp_Object filter;
600 filter = XCAR (XCDR (tem));
601 filter = list2 (filter, list2 (Qquote, object));
602 object = menu_item_eval_property (filter);
603 break;
604 }
590 } 605 }
591 else 606 else
592 /* Invalid keymap */ 607 /* Invalid keymap */