Mercurial > emacs
changeset 76911:0d761d6b0064
(tmm-menubar, tmm-prompt): Handle visibility of top level menu-items.
author | Nick Roberts <nickrob@snap.net.nz> |
---|---|
date | Tue, 03 Apr 2007 10:09:45 +0000 |
parents | e7efa8bb36c1 |
children | fac2e1af1607 |
files | lisp/tmm.el |
diffstat | 1 files changed, 16 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/tmm.el Tue Apr 03 10:08:44 2007 +0000 +++ b/lisp/tmm.el Tue Apr 03 10:09:45 2007 +0000 @@ -72,16 +72,20 @@ (setq list (cdr list)))) (if x-position (let ((tail menu-bar) (column 0) - this-one name) + this-one name visible) (while (and tail (<= column x-position)) (setq this-one (car tail)) (if (and (consp this-one) (consp (cdr this-one)) - (setq name ; nil if menu-item + (setq name ;simple menu (cond ((stringp (nth 1 this-one)) (nth 1 this-one)) - ((stringp (nth 2 this-one)) - (nth 2 this-one))))) + ;extended menu + ((stringp (nth 2 this-one)) + (setq visible (plist-get + (nthcdr 4 this-one) :visible)) + (unless (and visible (not (eval visible))) + (nth 2 this-one)))))) (setq column (+ column (length name) 1))) (setq tail (cdr tail))) (setq menu-bar-item (car this-one)))) @@ -189,14 +193,20 @@ ;; We use this to decide the initial minibuffer contents ;; and initial history position. (if default-item - (let ((tail menu)) + (let ((tail menu) visible) (while (and tail (not (eq (car-safe (car tail)) default-item))) ;; Be careful to count only the elements of MENU ;; that actually constitute menu bar items. (if (and (consp (car tail)) (or (stringp (car-safe (cdr (car tail)))) - (eq (car-safe (cdr (car tail))) 'menu-item))) + (and + (eq (car-safe (cdr (car tail))) 'menu-item) + (progn + (setq visible + (plist-get + (nthcdr 4 (car tail)) :visible)) + (or (not visible) (eval visible)))))) (setq index-of-default (1+ index-of-default))) (setq tail (cdr tail))))) (let ((prompt (concat "^." (regexp-quote tmm-mid-prompt))))