# HG changeset patch # User Richard M. Stallman # Date 1025635743 0 # Node ID 520292a3983b07240b23a754215a712eb8905380 # Parent 79f1326575708886fa1e9ef869b6302228754bd9 (easy-menu-popup-menu): New function. diff -r 79f132657570 -r 520292a3983b lisp/emacs-lisp/easymenu.el --- a/lisp/emacs-lisp/easymenu.el Tue Jul 02 18:48:34 2002 +0000 +++ b/lisp/emacs-lisp/easymenu.el Tue Jul 02 18:49:03 2002 +0000 @@ -616,6 +616,20 @@ (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