Mercurial > hg > xemacs-beta
diff lisp/vm/vm-menu.el @ 30:ec9a17fef872 r19-15b98
Import from CVS: tag r19-15b98
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:52:29 +0200 |
parents | 441bb1e64a06 |
children | 05472e90ae02 |
line wrap: on
line diff
--- a/lisp/vm/vm-menu.el Mon Aug 13 08:51:58 2007 +0200 +++ b/lisp/vm/vm-menu.el Mon Aug 13 08:52:29 2007 +0200 @@ -193,6 +193,8 @@ ["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] @@ -376,21 +378,30 @@ (defconst vm-menu-mime-dispose-menu (let ((title (if (vm-menu-fsfemacs-menus-p) - (list "Send MIME body to ..." - "Send MIME body to ..." + (list "Take Action on MIME body ..." + "Take Action on MIME body ..." "---" "---") - (list "Send MIME body to ...")))) + (list "Take Action on MIME body ...")))) (append title - (list ["File" (vm-mime-run-display-function-at-point - 'vm-mime-send-body-to-file) t] - ["Shell Pipeline (display output)" + (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-pipe-body-to-command) t] - ["Shell Pipeline (discard output)" + '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-command-discard-output) t])))) + '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) @@ -461,6 +472,33 @@ 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 @@ -631,6 +669,10 @@ (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)) @@ -727,6 +769,7 @@ (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 @@ -739,57 +782,67 @@ (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))) - (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)))))) + (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))))))) ;; to quiet the byte-compiler (defvar vm-menu-fsfemacs-url-browser-menu) (defvar vm-menu-fsfemacs-mime-dispose-menu) -(defun vm-menu-popup-url-browser-menu (event) - (interactive "e") - (cond ((and (vm-menu-xemacs-menus-p) vm-use-menus) +(defun vm-menu-goto-event (event) + (cond ((vm-menu-xemacs-menus-p) ;; 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-point event) (goto-char (event-point event))) + (and (event-point event) (goto-char (event-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) (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-mime-dispose-menu (event) (interactive "e") + (vm-menu-goto-event event) (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-point event) (goto-char (event-point event))) (popup-menu vm-menu-mime-dispose-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-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) @@ -816,7 +869,8 @@ (if (vm-menu-xemacs-menus-p) (cond ((eq major-mode 'mail-mode) vm-menu-mail-menu) - ((memq major-mode '(vm-mode vm-summary-mode vm-virtual-mode)) + ((memq major-mode '(vm-mode vm-presentation-mode + vm-summary-mode vm-virtual-mode)) vm-menu-dispose-menu) (t vm-menu-vm-menu)) (cond ((eq major-mode 'mail-mode) @@ -923,7 +977,7 @@ (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-mode-menu))))) + 'vm-menu-popup-context-menu))))) (defun vm-menu-install-menus () (cond ((consp vm-use-menus)