mu4e-view-gnus: cleanup keymap

Do not derive the keymap from gnus article mode, so we don't get the
unwanted menu entries, and don't need to disable things manually.
This commit is contained in:
Dirk-Jan C. Binnema
2021-03-12 22:28:51 +02:00
parent 9423212fa0
commit 44d801e2b0

View File

@ -161,10 +161,14 @@ with no charset."
(list handle attendee)) (list handle attendee))
handle-attendee)) handle-attendee))
(defvar mu4e-view-mode-map nil ;; We must neuter gnus-set-mode-line
"Keymap for \"*mu4e-view*\" buffers.") (defun mu4e~view-nop (func &rest args)
(unless mu4e-view-mode-map "Do nothing."
(setq mu4e-view-mode-map ;;(message "NOP %S %S %S %S" mu4e~view-mode major-mode func args)
(unless (derived-mode-p '(mu4e-view-mode))
(apply func args)))
(defvar mu4e-view-mode-map
(let ((map (make-sparse-keymap))) (let ((map (make-sparse-keymap)))
(define-key map (kbd "C-S-u") 'mu4e-update-mail-and-index) (define-key map (kbd "C-S-u") 'mu4e-update-mail-and-index)
@ -200,18 +204,6 @@ with no charset."
(define-key map "C" 'mu4e-compose-new) (define-key map "C" 'mu4e-compose-new)
(define-key map "E" 'mu4e-compose-edit) (define-key map "E" 'mu4e-compose-edit)
;; some gnus things we do not support
(define-key map "G" 'ignore)
(define-key map "I" 'ignore)
(define-key map "J" 'ignore)
(define-key map "K" 'ignore)
(define-key map "L" 'ignore)
(define-key map "N" 'ignore)
(define-key map "V" 'ignore)
(define-key map "X" 'ignore)
(define-key map "Y" 'ignore)
(define-key map "Z" 'ignore)
(define-key map "." 'mu4e-view-raw-message) (define-key map "." 'mu4e-view-raw-message)
(define-key map "|" 'mu4e-view-pipe) (define-key map "|" 'mu4e-view-pipe)
(define-key map "a" 'mu4e-view-action) (define-key map "a" 'mu4e-view-action)
@ -257,8 +249,6 @@ with no charset."
;; attachments ;; attachments
(define-key map "e" 'mu4e-view-save-attachment) (define-key map "e" 'mu4e-view-save-attachment)
(define-key map "o" 'ignore)
(define-key map "A" 'ignore)
;; marking/unmarking ;; marking/unmarking
(define-key map "d" 'mu4e-view-mark-for-trash) (define-key map "d" 'mu4e-view-mark-for-trash)
@ -285,8 +275,6 @@ with no charset."
;; misc ;; misc
(define-key map "w" 'visual-line-mode) (define-key map "w" 'visual-line-mode)
(define-key map "#" 'ignore)
(define-key map "h" 'ignore)
(define-key map (kbd "M-q") 'article-fill-long-lines) (define-key map (kbd "M-q") 'article-fill-long-lines)
;; next 3 only warn user when attempt in the message view ;; next 3 only warn user when attempt in the message view
@ -347,9 +335,10 @@ with no charset."
(define-key menumap [sepa4] '("--")) (define-key menumap [sepa4] '("--"))
(define-key menumap [next] '("Next" . mu4e-view-headers-next)) (define-key menumap [next] '("Next" . mu4e-view-headers-next))
(define-key menumap [previous] '("Previous" . mu4e-view-headers-prev))) (define-key menumap [previous] '("Previous" . mu4e-view-headers-prev)))
map))
(fset 'mu4e-view-mode-map mu4e-view-mode-map)) (set-keymap-parent map special-mode-map)
map)
"Keymap for mu4e-view mode")
(defcustom mu4e-view-mode-hook nil (defcustom mu4e-view-mode-hook nil
"Hook run when entering Mu4e-View mode." "Hook run when entering Mu4e-View mode."
@ -373,14 +362,12 @@ with no charset."
(define-derived-mode mu4e-view-mode gnus-article-mode "mu4e:view" (define-derived-mode mu4e-view-mode gnus-article-mode "mu4e:view"
"Major mode for viewing an e-mail message in mu4e, based on "Major mode for viewing an e-mail message in mu4e, based on
Gnus' article-mode." Gnus' article-mode."
;; remove some gnus stuff that does not apply
(define-key mu4e-view-mode-map [menu-bar Treatment] nil)
(define-key mu4e-view-mode-map [menu-bar Article] nil)
(define-key mu4e-view-mode-map [menu-bar post] nil)
(define-key mu4e-view-mode-map [menu-bar commands] nil)
;; Restore C-h b default behavior ;; Restore C-h b default behavior
(define-key mu4e-view-mode-map (kbd "C-h b") 'describe-bindings) (define-key mu4e-view-mode-map (kbd "C-h b") 'describe-bindings)
(setq mu4e~view-buffer-name gnus-article-buffer) (setq mu4e~view-buffer-name gnus-article-buffer)
;; ;; turn off gnus modeline changes and menu items
(when (fboundp 'gnus-set-mode-line)
(advice-add 'gnus-set-mode-line :around #'mu4e~view-nop))
(mu4e~view-mode-body)) (mu4e~view-mode-body))
(defun mu4e-view-message-text (msg) (defun mu4e-view-message-text (msg)
@ -444,7 +431,10 @@ attachments is done with `completing-read-multiple', in this case use
do (mm-save-part-to-file h (expand-file-name f dir)))) do (mm-save-part-to-file h (expand-file-name f dir))))
(message "No attached files found")))) (message "No attached files found"))))
;;; Various commands ;;; Actions
;;; ;;;
(provide 'mu4e-view-gnus) (provide 'mu4e-view-gnus)