Mercurial > hg > xemacs-beta
diff lisp/easymenu.el @ 371:cc15677e0335 r21-2b1
Import from CVS: tag r21-2b1
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:03:08 +0200 |
parents | a4f53d9b3154 |
children | d883f39b8495 |
line wrap: on
line diff
--- a/lisp/easymenu.el Mon Aug 13 11:01:58 2007 +0200 +++ b/lisp/easymenu.el Mon Aug 13 11:03:08 2007 +0200 @@ -23,9 +23,7 @@ ;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ;; 02111-1307, USA. -;;; Synched up with: Not synched with FSF but coordinated with the FSF -;;; easymenu maintainer for compatability with FSF 20.4. -;;; Please: Coordinate changes with Inge Frick <inge@nada.kth.se> +;;; Synched up with: Not synched with FSF. ;; Commentary: @@ -45,7 +43,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 the menu. +;; the name of a function that will present a 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. @@ -65,15 +63,6 @@ ;; - 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. @@ -153,14 +142,15 @@ (easy-menu-do-define (quote (, symbol)) (, maps) (, doc) (, menu))))) (defun easy-menu-do-define (symbol maps doc menu) - (when (featurep 'menubar) + (if (featurep 'menubar) + (progn (set symbol menu) - (fset symbol `(lambda (e) - ,doc - (interactive "@e") - (run-hooks 'activate-menubar-hook) - (setq zmacs-region-stays 't) - (popup-menu ,symbol))))) + (fset symbol (list 'lambda '(e) + doc + '(interactive "@e") + '(run-hooks 'activate-menubar-hook) + '(setq zmacs-region-stays 't) + (list 'popup-menu symbol)))))) (defun easy-menu-change (&rest args) (when (featurep 'menubar) @@ -173,7 +163,8 @@ (defun easy-menu-add (menu &optional map) "Add MENU to the current menu bar." - (when (featurep 'menubar) + (if (featurep 'menubar) + (progn (unless (member menu easy-menu-all-popups) (push menu easy-menu-all-popups)) (setq mode-popup-menu (if (> (length easy-menu-all-popups) 1) @@ -193,11 +184,12 @@ (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." - (when (featurep 'menubar) + (if (featurep 'menubar) + (progn (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) @@ -206,55 +198,7 @@ (and current-menubar (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'." - (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 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)))) - nil)) - -(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 an argument to `easy-menu-add-item'." - (when (featurep 'menubar) - (delete-menu-item (append path (list name)) - (easy-menu-normalize menu)))) - - - + (delete-menu-item (list (car 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