Mercurial > hg > xemacs-beta
diff lisp/easymenu.el @ 367:a4f53d9b3154 r21-1-13
Import from CVS: tag r21-1-13
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:01:07 +0200 |
parents | 19dcec799385 |
children | cc15677e0335 |
line wrap: on
line diff
--- a/lisp/easymenu.el Mon Aug 13 11:00:13 2007 +0200 +++ b/lisp/easymenu.el Mon Aug 13 11:01:07 2007 +0200 @@ -24,7 +24,7 @@ ;; 02111-1307, USA. ;;; Synched up with: Not synched with FSF but coordinated with the FSF -;;; easymenu maintor for compatability with FSF 20.4. +;;; easymenu maintainer for compatability with FSF 20.4. ;;; Please: Coordinate changes with Inge Frick <inge@nada.kth.se> ;; Commentary: @@ -45,7 +45,7 @@ ;; - Function: easy-menu-define SYMBOL MAPS DOC MENU ;; SYMBOL is both the name of the variable that holds the menu and -;; the name of a function that will present a the menu. +;; the name of a function that will present the menu. ;; MAPS is a list of keymaps where the menu should appear in the menubar. ;; DOC is the documentation string for the variable. ;; MENU is an XEmacs style menu description. @@ -153,15 +153,14 @@ (easy-menu-do-define (quote (, symbol)) (, maps) (, doc) (, menu))))) (defun easy-menu-do-define (symbol maps doc menu) - (if (featurep 'menubar) - (progn + (when (featurep 'menubar) (set symbol menu) - (fset symbol (list 'lambda '(e) - doc - '(interactive "@e") - '(run-hooks 'activate-menubar-hook) - '(setq zmacs-region-stays 't) - (list 'popup-menu symbol)))))) + (fset symbol `(lambda (e) + ,doc + (interactive "@e") + (run-hooks 'activate-menubar-hook) + (setq zmacs-region-stays 't) + (popup-menu ,symbol))))) (defun easy-menu-change (&rest args) (when (featurep 'menubar) @@ -174,8 +173,7 @@ (defun easy-menu-add (menu &optional map) "Add MENU to the current menu bar." - (if (featurep 'menubar) - (progn + (when (featurep 'menubar) (unless (member menu easy-menu-all-popups) (push menu easy-menu-all-popups)) (setq mode-popup-menu (if (> (length easy-menu-all-popups) 1) @@ -195,12 +193,11 @@ (t ;; Add at right. (set-buffer-menubar (copy-sequence current-menubar)) - (add-menu nil (car menu) (cdr menu))))))) + (add-menu nil (car menu) (cdr menu)))))) (defun easy-menu-remove (menu) "Remove MENU from the current menu bar." - (if (featurep 'menubar) - (progn + (when (featurep 'menubar) (setq easy-menu-all-popups (delq menu easy-menu-all-popups) mode-popup-menu (if (< (length easy-menu-all-popups) 1) (cons (easy-menu-title) @@ -209,7 +206,7 @@ (and current-menubar (assoc (car menu) current-menubar) - (delete-menu-item (list (car menu))))))) + (delete-menu-item (list (car menu)))))) (defsubst easy-menu-normalize (menu) (if (symbolp menu) @@ -217,14 +214,14 @@ menu)) (defun easy-menu-add-item (menu path item &optional before) - "At the end of the submenu of MENU with path PATH add ITEM. + "At the end of the submenu of MENU with path PATH, add ITEM. If ITEM is already present in this submenu, then this item will be changed. otherwise ITEM will be added at the end of the submenu, unless the optional argument BEFORE is present, in which case ITEM will instead be added before the item named BEFORE. MENU is either a symbol, which have earlier been used as the first argument in a call to `easy-menu-define', or the value of such a symbol -i.e. a menu, or nil which stands for the current menubar. +i.e. a menu, or nil, which stands for the current menubar. PATH is a list of strings for locating the submenu where ITEM is to be added. If PATH is nil, MENU itself is used. Otherwise, the first element should be the name of a submenu directly under MENU. This @@ -232,25 +229,29 @@ ITEM is either defined as in `easy-menu-define', a menu defined earlier by `easy-menu-define' or `easy-menu-create-menu' or an item returned from `easy-menu-item-present-p' or `easy-menu-remove-item'." - (add-menu-button path item before (easy-menu-normalize menu))) + (when (featurep 'menubar) + (add-menu-button path item before (easy-menu-normalize menu)))) (defun easy-menu-item-present-p (menu path name) "In submenu of MENU with path PATH, return true iff item NAME is present. MENU and PATH are defined as in `easy-menu-add-item'. NAME should be a string, the name of the element to be looked for. -The return value can be used as as an argument to `easy-menu-add-item'." +The return value can be used as an argument to `easy-menu-add-item'." + (if (featurep 'menubar) (car (find-menu-item (or (easy-menu-normalize menu) current-menubar) - (append path (list name))))) + (append path (list name)))) + nil)) (defun easy-menu-remove-item (menu path name) - "From submenu of MENU with path PATH remove item NAME. + "From submenu of MENU with path PATH, remove item NAME. MENU and PATH are defined as in `easy-menu-add-item'. NAME should be a string, the name of the element to be removed. -The return value can be used as as an argument to `easy-menu-add-item'." +The return value can be used as an argument to `easy-menu-add-item'." + (when (featurep 'menubar) (delete-menu-item (append path (list name)) - (easy-menu-normalize menu))) + (easy-menu-normalize menu))))