Mercurial > hg > xemacs-beta
diff lisp/easymenu.el @ 321:19dcec799385 r21-0-58
Import from CVS: tag r21-0-58
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:46:44 +0200 |
parents | 41ff10fd062f |
children | a4f53d9b3154 |
line wrap: on
line diff
--- a/lisp/easymenu.el Mon Aug 13 10:46:01 2007 +0200 +++ b/lisp/easymenu.el Mon Aug 13 10:46:44 2007 +0200 @@ -23,7 +23,9 @@ ;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ;; 02111-1307, USA. -;;; Synched up with: Not synched with FSF. +;;; Synched up with: Not synched with FSF but coordinated with the FSF +;;; easymenu maintor for compatability with FSF 20.4. +;;; Please: Coordinate changes with Inge Frick <inge@nada.kth.se> ;; Commentary: @@ -63,6 +65,15 @@ ;; - Function: easy-menu-remove MENU ;; Remove MENU from the current menubar. +;; - Function: easy-menu-add-item +;; Add item or submenu to existing menu + +;; - Function: easy-menu-item-present-p +;; Locate item + +;; - Function: easy-menu-remove-item +;; Delete item from menu. + ;; Emacs 19 never uses `easy-menu-add' or `easy-menu-remove', menus ;; automatically appear and disappear when the keymaps specified by ;; the MAPS argument to `easy-menu-define' are activated. @@ -200,6 +211,50 @@ (assoc (car menu) current-menubar) (delete-menu-item (list (car menu))))))) +(defsubst easy-menu-normalize (menu) + (if (symbolp menu) + (symbol-value menu) + menu)) + +(defun easy-menu-add-item (menu path item &optional before) + "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. +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 +submenu is then traversed recursively with the remaining elements of PATH. +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))) + +(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'." + (car (find-menu-item (or (easy-menu-normalize menu) current-menubar) + (append path (list name))))) + +(defun easy-menu-remove-item (menu path 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'." + (delete-menu-item (append path (list name)) + (easy-menu-normalize menu))) + + + + ;; Think up a good title for the menu. Take the major-mode of the ;; buffer, strip the -mode part, convert hyphens to spaces, and ;; capitalize it.