]> git.eshelyaron.com Git - emacs.git/commitdiff
(easy-menu-popup-menu): New function.
authorRichard M. Stallman <rms@gnu.org>
Tue, 2 Jul 2002 18:49:03 +0000 (18:49 +0000)
committerRichard M. Stallman <rms@gnu.org>
Tue, 2 Jul 2002 18:49:03 +0000 (18:49 +0000)
lisp/emacs-lisp/easymenu.el

index bf2e190e4892283161a6539c7b64a8844c391fc8..045a5590699c146737d08b9566c7ade5d6573251 100644 (file)
@@ -616,6 +616,20 @@ In some cases we use that to select between the local and global maps."
   (or (keymapp map) (error "Malformed menu in easy-menu: (%s)" map))
   map)
 
+(defun easy-menu-popup-menu (menu &optional event)
+  "Pop up a menu and run a command according to user's selection.
+MENU is a menu description as in `easy-menu-define'.
+EVENT is a mouse button event and determines where to pop up the menu.
+If EVENT is nil, pop up menu at the current mouse position."
+  (let ((map (easy-menu-create-menu (car menu) (cdr menu))))
+    (if (symbolp map)
+       (let ((f (memq :filter (get map 'menu-prop))))
+         (setq map (symbol-function map))
+         (if f (setq map (funcall (cadr f) map)))))
+    (let* ((sel (x-popup-menu (or event t) map))
+          (f (if (consp sel) (lookup-key map (apply 'vector sel)))))
+      (if (commandp f) (call-interactively f)))))
+
 (provide 'easymenu)
 
 ;;; easymenu.el ends here