diff options
author | Richard M. Stallman <rms@gnu.org> | 2002-07-02 18:49:03 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 2002-07-02 18:49:03 +0000 |
commit | 89fd3098d88e6e2f41bd56a0629f609f02b6c42f (patch) | |
tree | e7bcdd5d60aa916e469d1806733f24f1fc88c0b4 /lisp/emacs-lisp | |
parent | 4795d1c7d19313b7313dcc21c52eaf3e168cf77c (diff) | |
download | emacs-89fd3098d88e6e2f41bd56a0629f609f02b6c42f.tar.gz emacs-89fd3098d88e6e2f41bd56a0629f609f02b6c42f.tar.bz2 emacs-89fd3098d88e6e2f41bd56a0629f609f02b6c42f.zip |
(easy-menu-popup-menu): New function.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r-- | lisp/emacs-lisp/easymenu.el | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lisp/emacs-lisp/easymenu.el b/lisp/emacs-lisp/easymenu.el index bf2e190e489..045a5590699 100644 --- a/lisp/emacs-lisp/easymenu.el +++ b/lisp/emacs-lisp/easymenu.el @@ -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 |