diff lisp/vm/vm-menu.el @ 70:131b0175ea99 r20-0b30

Import from CVS: tag r20-0b30
author cvs
date Mon, 13 Aug 2007 09:02:59 +0200
parents 05472e90ae02
children 0d2f883870bc
line wrap: on
line diff
--- a/lisp/vm/vm-menu.el	Mon Aug 13 09:00:04 2007 +0200
+++ b/lisp/vm/vm-menu.el	Mon Aug 13 09:02:59 2007 +0200
@@ -1,5 +1,5 @@
 ;;; Menu related functions and commands
-;;; Copyright (C) 1995, 1997 Kyle E. Jones
+;;; Copyright (C) 1995 Kyle E. Jones
 ;;;
 ;;; Folders menu derived from
 ;;;     vm-folder-menu.el
@@ -44,29 +44,17 @@
 
 (provide 'vm-menu)
 
-;; copied from vm-vars.el because vm-xemacs-p, vm-xemacs-mule-p
-;; and vm-fsfemacs-19-p are needed below at load time and
-;; vm-note-emacs-version may not be autoloadable.
-(or (fboundp 'vm-note-emacs-version)
-    (defun vm-note-emacs-version ()
-      (setq vm-xemacs-p (string-match "XEmacs" emacs-version)
-	    vm-xemacs-mule-p (and vm-xemacs-p (featurep 'mule)
-				  ;; paranoia
-				  (fboundp 'set-file-coding-system))
-	    vm-fsfemacs-19-p (not vm-xemacs-p))))
-
-;; make sure the emacs/xemacs version variables are set, as they
-;; are needed below at load time.
-(vm-note-emacs-version)
-
 (defun vm-menu-fsfemacs-menus-p ()
-  (and vm-fsfemacs-19-p
+  (and (vm-fsfemacs-19-p)
        (fboundp 'menu-bar-mode)))
 
 (defun vm-menu-xemacs-menus-p ()
-  (and vm-xemacs-p
+  (and (vm-xemacs-p)
        (fboundp 'set-buffer-menubar)))
 
+;; defined again in vm-misc.el but we need it here for some
+;; initializations.  The "noautoload" vm.elc won't work without
+;; this.
 (defun vm-fsfemacs-19-p ()
   (and (string-match "^19" emacs-version)
        (not (string-match "XEmacs\\|Lucid" emacs-version))))
@@ -79,7 +67,7 @@
 (defconst vm-menu-folder-menu
   (list
    "Folder"
-   (if vm-fsfemacs-19-p
+   (if (vm-fsfemacs-19-p)
        ["Manipulate Folders" ignore (ignore)]
      vm-menu-folders-menu)
    "---"
@@ -135,7 +123,6 @@
       ["Pipe to Command" vm-pipe-message-to-command vm-message-list]
       "---"
       ["Burst Message as Digest" (vm-burst-digest "guess") vm-message-list]
-      ["Decode MIME" vm-decode-mime-message (vm-menu-can-decode-mime-p)]
       ))))
 
 (defconst vm-menu-motion-menu
@@ -191,7 +178,6 @@
     ["Retry Bounced Message" vm-resend-bounced-message vm-message-list]
     ["Send Digest (RFC934)" vm-send-rfc934-digest vm-message-list]
     ["Send Digest (RFC1153)" vm-send-rfc1153-digest vm-message-list]
-    ["Send MIME Digest" vm-send-mime-digest vm-message-list]
     ))
 
 (defconst vm-menu-mark-menu
@@ -205,8 +191,6 @@
     ["Unmark" vm-unmark-message vm-message-list]
     ["Mark All" vm-mark-all-messages vm-message-list]
     ["Clear All Marks" vm-clear-all-marks vm-message-list]
-    ["Mark Region in Summary" vm-mark-summary-region vm-message-list]
-    ["Unmark Region in Summary" vm-unmark-summary-region vm-message-list]
     "----"
     ["Mark Same Subject" vm-mark-messages-same-subject vm-message-list]
     ["Unmark Same Subject" vm-unmark-messages-same-subject vm-message-list]
@@ -283,139 +267,22 @@
 	   ["Send, Keep Composing" vm-mail-send (vm-menu-can-send-mail-p)]
 	   ["Cancel" kill-buffer t]
 	   "----"
-	   ["Yank Original" vm-menu-yank-original vm-reply-list]
+	   "Go to Field:"
 	   "----"
-	   (append
-	    (if (vm-menu-fsfemacs-menus-p)
-		(list "Send Using MIME..."
-		      "Send Using MIME..."
-		      "---"
-		      "---")
-	      (list "Send Using MIME..."))
-	    (list
-	     ["Use MIME"
-	      (set (make-local-variable 'vm-send-using-mime) t)
-	      :active t
-	      :style radio
-	      :selected vm-send-using-mime]
-	     ["Don't use MIME"
-	      (set (make-local-variable 'vm-send-using-mime) nil)
-	      :active t
-	      :style radio
-	      :selected (not vm-send-using-mime)]))
-	   (append
-	    (if (vm-menu-fsfemacs-menus-p)
-		(list "Fragment Messages Larger Than ..."
-		      "Fragment Messages Larger Than ..."
-		      "---"
-		      "---")
-	      (list "Fragment Messages Larger Than ..."))
-	    (list ["Infinity, i.e., don't fragment"
-		   (set (make-local-variable 'vm-mime-max-message-size) nil)
-		   :active vm-send-using-mime
-		   :style radio
-		   :selected (eq vm-mime-max-message-size nil)]
-		  ["50000 bytes"
-		   (set (make-local-variable 'vm-mime-max-message-size)
-			50000)
-		   :active vm-send-using-mime
-		   :style radio
-		   :selected (eq vm-mime-max-message-size 50000)]
-		  ["100000 bytes"
-		   (set (make-local-variable 'vm-mime-max-message-size)
-			100000)
-		   :active vm-send-using-mime
-		   :style radio
-		   :selected (eq vm-mime-max-message-size 100000)]
-		  ["200000 bytes"
-		   (set (make-local-variable 'vm-mime-max-message-size)
-			200000)
-		   :active vm-send-using-mime
-		   :style radio
-		   :selected (eq vm-mime-max-message-size 200000)]
-		  ["500000 bytes"
-		   (set (make-local-variable 'vm-mime-max-message-size)
-			500000)
-		   :active vm-send-using-mime
-		   :style radio
-		   :selected (eq vm-mime-max-message-size 500000)]
-		  ["1000000 bytes"
-		   (set (make-local-variable 'vm-mime-max-message-size)
-			1000000)
-		   :active vm-send-using-mime
-		   :style radio
-		   :selected (eq vm-mime-max-message-size 1000000)]
-		  ["2000000 bytes"
-		   (set (make-local-variable 'vm-mime-max-message-size)
-			2000000)
-		   :active vm-send-using-mime
-		   :style radio
-		   :selected (eq vm-mime-max-message-size 2000000)]))
-	   (append
-	    (if (vm-menu-fsfemacs-menus-p)
-		(list "Encode 8-bit Characters Using ..."
-		      "Encode 8-bit Characters Using ..."
-		      "---"
-		      "---")
-	      (list "Encode 8-bit Characters Using ..."))
-	    (list
-	     ["Nothing, i.e., send unencoded"
-	      (set (make-local-variable 'vm-mime-8bit-text-transfer-encoding)
-		   '8bit)
-	      :active vm-send-using-mime
-	      :style radio
-	      :selected (eq vm-mime-8bit-text-transfer-encoding '8bit)]
-	     ["Quoted-Printable"
-	      (set (make-local-variable 'vm-mime-8bit-text-transfer-encoding)
-		   'quoted-printable)
-	      :active vm-send-using-mime
-	      :style radio
-	      :selected (eq vm-mime-8bit-text-transfer-encoding
-			    'quoted-printable)]
-	     ["BASE64"
-	      (set (make-local-variable 'vm-mime-8bit-text-transfer-encoding)
-		   'base64)
-	      :active vm-send-using-mime
-	      :style radio
-	      :selected (eq vm-mime-8bit-text-transfer-encoding 'base64)]))
+	   ["      To:" mail-to t]
+	   ["      Subject:" mail-subject	t]
+	   ["      CC:" mail-cc t]
+	   ["      BCC:" mail-bcc t]
+	   ["      Reply-To:" mail-replyto t]
+	   ["      Text" mail-text t]
 	   "----"
-	   ["Attach File..."	vm-mime-attach-file vm-send-using-mime]
-;;	   ["Attach MIME Message..." vm-mime-attach-mime-file
-;;	    vm-send-using-mime]
-	   ["Encode MIME, But Don't Send" vm-mime-encode-composition
-	    (and vm-send-using-mime
-		 (null (vm-mail-mode-get-header-contents "MIME-Version:")))]
-	   ["Preview MIME Before Sending" vm-mime-preview-composition
-	    vm-send-using-mime]
+	   ["Yank Original" vm-menu-yank-original vm-reply-list]
+	   ["Fill Yanked Message" mail-fill-yanked-message t]
+	   ["Insert Signature"	mail-signature t]
+	   ["Insert File..." insert-file t]
+	   ["Insert Buffer..."	insert-buffer t]
 	   ))))
 
-(defconst vm-menu-mime-dispose-menu
-  (let ((title (if (vm-menu-fsfemacs-menus-p)
-		   (list "Take Action on MIME body ..."
-			 "Take Action on MIME body ..."
-			 "---"
-			 "---")
-		 (list "Take Action on MIME body ..."))))
-    (append
-     title
-     (list ["Display as US-ASCII Text"
-	    (vm-mime-run-display-function-at-point
-	     'vm-mime-display-body-as-text) t]
-	   ["Display using External Viewer"
-	    (vm-mime-run-display-function-at-point
-	     'vm-mime-display-body-using-external-viewer) t]
-	   "---"
-	   ["Save to File" (vm-mime-run-display-function-at-point
-			    'vm-mime-send-body-to-file) t]
-	   ["Send to Printer" (vm-mime-run-display-function-at-point
-			       'vm-mime-send-body-to-printer) t]
-	   ["Feed to Shell Pipeline (display output)"
-	    (vm-mime-run-display-function-at-point
-	     'vm-mime-pipe-body-to-queried-command) t]
-	   ["Feed to Shell Pipeline (discard output)"
-	    (vm-mime-run-display-function-at-point
-	     'vm-mime-pipe-body-to-queried-command-discard-output) t]))))
-
 (defconst vm-menu-url-browser-menu
   (let ((title (if (vm-menu-fsfemacs-menus-p)
 		   (list "Send URL to ..."
@@ -444,17 +311,6 @@
 					   'vm-mouse-send-url-to-netscape)
 	    t]))))
 
-(defconst vm-menu-mailto-url-browser-menu
-  (let ((title (if (vm-menu-fsfemacs-menus-p)
-		   (list "Send Mail using ..."
-			 "Send Mail using ..."
-			 "---"
-			 "---")
-		 (list "Send Mail using ..."))))
-    (append
-     title
-     (list ["VM" (vm-mouse-send-url-at-position (point) 'ignore) t]))))
-
 (defconst vm-menu-subject-menu
   (let ((title (if (vm-menu-fsfemacs-menus-p)
 		   (list "Take Action on Subject..."
@@ -496,33 +352,6 @@
        vm-message-list]
       ))))
 
-(defconst vm-menu-content-disposition-menu
-  (let ((title (if (vm-menu-fsfemacs-menus-p)
-		   (list "Set Content Disposition"
-			 "Set Content Disposition"
-			 "---"
-			 "---")
-		 (list "Set Content Disposition"))))
-    (append
-     title
-     (list ["Unspecified"
-	    (vm-mime-set-attachment-disposition-at-point 'unspecified)
-	    :active vm-send-using-mime
-	    :style radio
-	    :selected (eq (vm-mime-attachment-disposition-at-point)
-			  'unspecified)]
-	   ["Inline"
-	    (vm-mime-set-attachment-disposition-at-point 'inline)
-	    :active vm-send-using-mime
-	    :style radio
-	    :selected (eq (vm-mime-attachment-disposition-at-point) 'inline)]
-	   ["Attachment"
-	    (vm-mime-set-attachment-disposition-at-point 'attachment)
-	    :active vm-send-using-mime
-	    :style radio
-	    :selected (eq (vm-mime-attachment-disposition-at-point)
-			  'attachment)]))))
-
 (defvar vm-menu-vm-menubar nil)
 
 (defconst vm-menu-vm-menu
@@ -540,7 +369,7 @@
 		  vm-menu-label-menu
 		  vm-menu-sort-menu
 		  vm-menu-virtual-menu
-;;		  vm-menu-undo-menu
+		  vm-menu-undo-menu
 		  vm-menu-dispose-menu
 		  "---"
 		  "---"
@@ -556,56 +385,40 @@
   (apply command args))
 
 (defun vm-menu-can-revert-p ()
-  (condition-case nil
-      (save-excursion
-	(vm-select-folder-buffer)
-	(and (buffer-modified-p) buffer-file-name))
-    (error nil)))
+  (save-excursion
+    (vm-check-for-killed-folder)
+    (vm-select-folder-buffer)
+    (and (buffer-modified-p) buffer-file-name)))
 
 (defun vm-menu-can-recover-p ()
-  (condition-case nil
-      (save-excursion
-	(vm-select-folder-buffer)
-	(and buffer-file-name
-	     buffer-auto-save-file-name
-	     (file-newer-than-file-p
-	      buffer-auto-save-file-name
-	      buffer-file-name)))
-    (error nil)))
+  (save-excursion
+    (vm-check-for-killed-folder)
+    (vm-select-folder-buffer)
+    (and buffer-file-name
+	 buffer-auto-save-file-name
+	 (file-newer-than-file-p
+	  buffer-auto-save-file-name
+	  buffer-file-name))))
 
 (defun vm-menu-can-save-p ()
-  (condition-case nil
-      (save-excursion
-	(vm-select-folder-buffer)
-	(or (eq major-mode 'vm-virtual-mode)
-	    (buffer-modified-p)))
-    (error nil)))
+  (save-excursion
+    (vm-check-for-killed-folder)
+    (vm-select-folder-buffer)
+    (or (eq major-mode 'vm-virtual-mode)
+	(buffer-modified-p))))
 
 (defun vm-menu-can-get-new-mail-p ()
-  (condition-case nil
-      (save-excursion
-	(vm-select-folder-buffer)
-	(or (eq major-mode 'vm-virtual-mode)
-	    (and (not vm-block-new-mail) (not vm-folder-read-only))))
-    (error nil)))
+  (save-excursion
+    (vm-check-for-killed-folder)
+    (vm-select-folder-buffer)
+    (or (eq major-mode 'vm-virtual-mode)
+	(and (not vm-block-new-mail) (not vm-folder-read-only)))))
 
 (defun vm-menu-can-undo-p ()
-  (condition-case nil
-      (save-excursion
-	(vm-select-folder-buffer)
-	vm-undo-record-list)
-    (error nil)))
-
-(defun vm-menu-can-decode-mime-p ()
-  (condition-case nil
-      (save-excursion
-	(vm-select-folder-buffer)
-	(and vm-display-using-mime
-	     vm-message-pointer
-	     vm-presentation-buffer
-	     (not vm-mime-decoded)
-	     (not (vm-mime-plain-message-p (car vm-message-pointer)))))
-    (error nil)))
+  (save-excursion
+    (vm-check-for-killed-folder)
+    (vm-select-folder-buffer)
+    vm-undo-record-list))
 
 (defun vm-menu-yank-original ()
   (interactive)
@@ -622,7 +435,7 @@
       (let ((headers '("to" "cc" "bcc" "resent-to" "resent-cc" "resent-bcc"))
 	    h)
 	(while headers
-	  (setq h (vm-mail-mode-get-header-contents (car headers)))
+	  (setq h (mail-fetch-field (car headers)))
 	  (and (stringp h) (string-match "[^ \t\n,]" h)
 	       (throw 'done t))
 	  (setq headers (cdr headers)))
@@ -695,18 +508,6 @@
 	;; url browser menu
 	(vm-easy-menu-define vm-menu-fsfemacs-url-browser-menu (list dummy) nil
 			     vm-menu-url-browser-menu)
-	;; mailto url browser menu
-	(vm-easy-menu-define vm-menu-fsfemacs-mailto-url-browser-menu
-			     (list dummy) nil
-			     vm-menu-url-browser-menu)
-	;; mime dispose menu
-	(vm-easy-menu-define vm-menu-fsfemacs-mime-dispose-menu
-			     (list dummy) nil
-			     vm-menu-mime-dispose-menu)
-	;; content disposition menu
-	(vm-easy-menu-define vm-menu-fsfemacs-content-disposition-menu
-			     (list dummy) nil
-			     vm-menu-content-disposition-menu)
 	;; block the global menubar entries in the map so that VM
 	;; can take over the menubar if necessary.
 	(define-key map [rootmenu] (make-sparse-keymap))
@@ -752,7 +553,7 @@
 	      (menu-list 
 	       (if (consp vm-use-menus)
 		   (reverse vm-use-menus)
-		 (list 'help nil 'dispose 'virtual 'sort
+		 (list 'help nil 'dispose 'undo 'virtual 'sort
 		       'label 'mark 'send 'motion 'folder))))
 	  (while menu-list
 	    (if (null (car menu-list))
@@ -803,7 +604,6 @@
 	 (goto-char (posn-point (event-start event)))
 	 (vm-menu-popup-fsfemacs-menu event))))
 
-(defvar vm-menu-fsfemacs-content-disposition-menu)
 (defun vm-menu-popup-context-menu (event)
   (interactive "e")
   ;; We should not need to do anything here for XEmacs.  The
@@ -816,78 +616,37 @@
   (cond ((and (vm-menu-fsfemacs-menus-p) vm-use-menus)
 	 (set-buffer (window-buffer (posn-window (event-start event))))
 	 (goto-char (posn-point (event-start event)))
-	 (if (get-text-property (point) 'vm-mime-object)
-	     (vm-menu-popup-fsfemacs-menu
-	      event vm-menu-fsfemacs-content-disposition-menu)
-	   (let (o-list o menu (found nil))
-	     (setq o-list (overlays-at (point)))
-	     (while (and o-list (not found))
-	       (cond ((overlay-get (car o-list) 'vm-url)
-		      (setq found t)
-		      (vm-menu-popup-url-browser-menu event))
-		     ((setq menu (overlay-get (car o-list) 'vm-header))
-		      (setq found t)
-		      (vm-menu-popup-fsfemacs-menu event menu))
-		     ((overlay-get (car o-list) 'vm-mime-layout)
-		      (setq found t)
-		      (vm-menu-popup-mime-dispose-menu event)))
-	       (setq o-list (cdr o-list)))
-	     (and (not found) (vm-menu-popup-fsfemacs-menu event)))))))
+	 (let (o-list o menu (found nil))
+	   (setq o-list (overlays-at (point)))
+	   (while (and o-list (not found))
+	     (cond ((overlay-get (car o-list) 'vm-url)
+		    (setq found t)
+		    (vm-menu-popup-url-browser-menu event))
+		   ((setq menu (overlay-get (car o-list) 'vm-header))
+		    (setq found t)
+		    (vm-menu-popup-fsfemacs-menu event menu)))
+	     (setq o-list (cdr o-list)))
+	   (and (not found) (vm-menu-popup-fsfemacs-menu event))))))
 
 ;; to quiet the byte-compiler
 (defvar vm-menu-fsfemacs-url-browser-menu)
-(defvar vm-menu-fsfemacs-mailto-url-browser-menu)
-(defvar vm-menu-fsfemacs-mime-dispose-menu)
 
-(defun vm-menu-goto-event (event)
-  (cond ((vm-menu-xemacs-menus-p)
+(defun vm-menu-popup-url-browser-menu (event)
+  (interactive "e")
+  (cond ((and (vm-menu-xemacs-menus-p) vm-use-menus)
 	 ;; Must select window instead of just set-buffer because
 	 ;; popup-menu returns before the user has made a
 	 ;; selection.  This will cause the command loop to
 	 ;; resume which might undo what set-buffer does.
 	 (select-window (event-window event))
-	 (and (event-closest-point event)
-	      (goto-char (event-closest-point event))))
-	((vm-menu-fsfemacs-menus-p)
-	 (set-buffer (window-buffer (posn-window (event-start event))))
-	 (goto-char (posn-point (event-start event))))))
-
-(defun vm-menu-popup-url-browser-menu (event)
-  (interactive "e")
-  (vm-menu-goto-event event)
-  (cond ((and (vm-menu-xemacs-menus-p) vm-use-menus)
+	 (and (event-point event) (goto-char (event-point event)))
 	 (popup-menu vm-menu-url-browser-menu))
 	((and (vm-menu-fsfemacs-menus-p) vm-use-menus)
+	 (set-buffer (window-buffer (posn-window (event-start event))))
+	 (goto-char (posn-point (event-start event)))
 	 (vm-menu-popup-fsfemacs-menu
 	  event vm-menu-fsfemacs-url-browser-menu))))
 
-(defun vm-menu-popup-mailto-url-browser-menu (event)
-  (interactive "e")
-  (vm-menu-goto-event event)
-  (cond ((and (vm-menu-xemacs-menus-p) vm-use-menus)
-	 (popup-menu vm-menu-mailto-url-browser-menu))
-	((and (vm-menu-fsfemacs-menus-p) vm-use-menus)
-	 (vm-menu-popup-fsfemacs-menu
-	  event vm-menu-fsfemacs-mailto-url-browser-menu))))
-
-(defun vm-menu-popup-mime-dispose-menu (event)
-  (interactive "e")
-  (vm-menu-goto-event event)
-  (cond ((and (vm-menu-xemacs-menus-p) vm-use-menus)
-	 (popup-menu vm-menu-mime-dispose-menu))
-	((and (vm-menu-fsfemacs-menus-p) vm-use-menus)
-	 (vm-menu-popup-fsfemacs-menu
-	  event vm-menu-fsfemacs-mime-dispose-menu))))
-
-(defun vm-menu-popup-content-disposition-menu (event)
-  (interactive "e")
-  (vm-menu-goto-event event)
-  (cond ((and (vm-menu-xemacs-menus-p) vm-use-menus)
-	 (popup-menu vm-menu-content-disposition-menu))
-	((and (vm-menu-fsfemacs-menus-p) vm-use-menus)
-	 (vm-menu-popup-fsfemacs-menu
-	  event vm-menu-fsfemacs-content-disposition-menu))))
-
 ;; to quiet the byte-compiler
 (defvar vm-menu-fsfemacs-mail-menu)
 (defvar vm-menu-fsfemacs-dispose-popup-menu)
@@ -914,8 +673,7 @@
   (if (vm-menu-xemacs-menus-p)
       (cond ((eq major-mode 'mail-mode)
 	     vm-menu-mail-menu)
-	    ((memq major-mode '(vm-mode vm-presentation-mode
-				vm-summary-mode vm-virtual-mode))
+	    ((memq major-mode '(vm-mode vm-summary-mode vm-virtual-mode))
 	     vm-menu-dispose-menu)
 	    (t vm-menu-vm-menu))
     (cond ((eq major-mode 'mail-mode)
@@ -938,9 +696,6 @@
   (cond ((vm-menu-xemacs-menus-p)
 	 (if (null (car (find-menu-item current-menubar '("XEmacs"))))
 	     (set-buffer-menubar vm-menu-vm-menubar)
-	   ;; copy the current menubar in case it has been changed.
-	   (make-local-variable 'vm-menu-vm-menubar)
-	   (setq vm-menu-vm-menubar (copy-sequence current-menubar))
 	   (set-buffer-menubar (copy-sequence (vm-menu-xemacs-global-menubar)))
 	   (condition-case nil
 	       (add-menu-button nil vm-menu-vm-button nil)
@@ -949,12 +704,7 @@
 	 (vm-menu-set-menubar-dirty-flag)
 	 (vm-check-for-killed-summary)
 	 (and vm-summary-buffer
-	      (save-excursion
-		(vm-menu-toggle-menubar vm-summary-buffer)))
-	 (vm-check-for-killed-presentation)
-	 (and vm-presentation-buffer-handle
-	      (save-excursion
-		(vm-menu-toggle-menubar vm-presentation-buffer-handle))))
+	      (vm-menu-toggle-menubar vm-summary-buffer)))
 	((vm-menu-fsfemacs-menus-p)
 	 (if (not (eq (lookup-key vm-mode-map [menu-bar])
 		      (lookup-key vm-mode-menu-map [rootmenu vm])))
@@ -969,9 +719,7 @@
 (defun vm-menu-install-menubar ()
   (cond ((vm-menu-xemacs-menus-p)
 	 (setq vm-menu-vm-menubar (vm-menu-make-xemacs-menubar))
-	 (set-buffer-menubar vm-menu-vm-menubar)
-         (run-hooks 'vm-menu-setup-hook)
-         (setq vm-menu-vm-menubar current-menubar))
+	 (set-buffer-menubar vm-menu-vm-menubar))
 	((and (vm-menu-fsfemacs-menus-p)
 	      ;; menus only need to be installed once for FSF Emacs
 	      (not (fboundp 'vm-menu-undo-menu)))
@@ -1002,8 +750,7 @@
   (cond ((vm-menu-xemacs-menus-p)
 	 ;; mail-mode doesn't have mode-popup-menu bound to
 	 ;; mouse-3 by default.  fix that.
-	 (if vm-popup-menu-on-mouse-3
-	     (define-key vm-mail-mode-map 'button3 'popup-mode-menu))
+	 (define-key vm-mail-mode-map 'button3 'popup-mode-menu)
 	 ;; put menu on menubar also.
 	 (if (vm-menu-xemacs-global-menubar)
 	     (progn
@@ -1017,12 +764,8 @@
 	 ;; Poorly.
 	 ;;(define-key vm-mail-mode-map [menu-bar mail]
 	 ;;  (cons "Mail" vm-menu-fsfemacs-mail-menu))
-	 (defvar mail-mode-map)
-	 (define-key mail-mode-map [menu-bar mail]
-	   (cons "Mail" vm-menu-fsfemacs-mail-menu))
-	 (if vm-popup-menu-on-mouse-3
-	     (define-key vm-mail-mode-map [down-mouse-3]
-	       'vm-menu-popup-context-menu)))))
+	 (define-key vm-mail-mode-map [down-mouse-3]
+	   'vm-menu-popup-mode-menu))))
 
 (defun vm-menu-install-menus ()
   (cond ((consp vm-use-menus)
@@ -1178,7 +921,7 @@
 (defun vm-menu-hm-make-folder-menu ()
   "Makes a menu with the mail folders of the directory `vm-folder-directory'."
   (interactive)
-  (message "Building folders menu...")
+  (vm-unsaved-message "Building folders menu...")
   (let ((folder-list (vm-menu-hm-tree-make-file-list vm-folder-directory))
 	(inbox-list (if (listp (car vm-spool-files))
 			(mapcar 'car vm-spool-files)
@@ -1235,7 +978,7 @@
 		      "----"
 		      ["Rebuild Folders Menu" vm-menu-hm-make-folder-menu vm-folder-directory]
 		      ))))
-  (message "Building folders menu... done")
+  (vm-unsaved-message "Building folders menu... done")
   (vm-menu-hm-install-menu))
 
 (defun vm-menu-hm-install-menu ()