Mercurial > emacs
changeset 6600:f75ac1f3d99c
*** empty log message ***
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Wed, 30 Mar 1994 18:57:29 +0000 |
parents | 43fffc5a7dd8 |
children | fb0929970d84 |
files | lisp/emacs-lisp/easymenu.el |
diffstat | 1 files changed, 27 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/emacs-lisp/easymenu.el Wed Mar 30 18:51:54 1994 +0000 +++ b/lisp/emacs-lisp/easymenu.el Wed Mar 30 18:57:29 1994 +0000 @@ -1,8 +1,9 @@ ;;; easymenu.el --- support the easymenu interface for defining a menu. +;; Copyright (C) 1994 Free Software Foundation, Inc. + ;; Keywords: emulations - -;; Copyright (C) 1994 Free Software Foundation, Inc. +;; Author: rms ;; This file is part of GNU Emacs. @@ -27,22 +28,26 @@ ;;; Code: ;;;###autoload -(defun easy-menu-define (symbol maps doc menu) +(defmacro easy-menu-define (symbol maps doc menu) "Define a menu bar submenu in maps MAPS, according to MENU. The arguments SYMBOL and DOC are ignored; they are present for -compatibility only. In other Emacs versions they may be used -as a variable to hold the menu data, and a doc string for that variable. +compatibility only. SYMBOL is not evaluated. In other Emacs versions +these arguments may be used as a variable to hold the menu data, and a +doc string for that variable. The first element of MENU must be a string. It is the menu bar item name. The rest of the elements are menu items. -A menu item is usually a vector of three elements: [NAME CALLBACK t] +A menu item is usually a vector of three elements: [NAME CALLBACK ENABLE] NAME is a string--the menu item name. CALLBACK is a command to run when the item is chosen, or a list to evaluate when the item is chosen. +ENABLE is a symbol; if its value is non-nil, the item is enabled +for selection. + A menu item can be a string. Then that string appears in the menu as unselectable text. A string consisting solely of hyphens is displayed as a solid horizontal line. @@ -51,12 +56,14 @@ The first element should be the submenu name. That's used as the menu item in the top-level menu. The cdr of the submenu list is a list of menu items, as above." - (or (keymapp maps) (setq maps (list maps))) - (let ((keymap (easy-menu-keymap (car menu) (cdr menu)))) - (while maps - (define-key (car maps) (vector 'menu-bar (intern (car menu))) - (cons (car menu) keymap)) - (setq maps (cdr maps))))) + (` (let* ((maps (, maps)) + (menu (, menu)) + (keymap (easy-menu-keymap (car menu) (cdr menu)))) + (and (keymapp maps) (setq maps (list maps))) + (while maps + (define-key (car maps) (vector 'menu-bar (intern (car menu))) + (cons (car menu) keymap)) + (setq maps (cdr maps)))))) (defvar easy-menu-item-count 0) @@ -76,16 +83,15 @@ (setq name (if (string-match "^-+$" item) "" item))) ((consp item) (setq command (easy-menu-keymap (car item) (cdr item))) - (setq name (car item))) + (setq name (concat (car item) "..."))) ((vectorp item) (setq command (make-symbol (format "menu-function-%d" easy-menu-item-count))) - (setq enabler (make-symbol (format "menu-function-%d-enabler" - easy-menu-item-count))) (setq easy-menu-item-count (1+ easy-menu-item-count)) - (put command 'menu-enable enabler) - (set enabler (aref item 2)) + (put command 'menu-enable (aref item 2)) (setq name (aref item 0)) + (if (keymapp callback) + (setq name (concat name " ..."))) (if (symbolp callback) (fset command callback) (fset command (list 'lambda () '(interactive) callback))))) @@ -98,6 +104,10 @@ (setq menu-items (cdr menu-items))) menu)) +(defmacro easy-menu-remove (menu)) + +(defmacro easy-menu-add (menu &optional map)) + (provide 'easymenu) ;;; easymenu.el ends here