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))))