mu4e-view: (gnus) enable displaying custom headers
insert custom headers / mu4e specific headers when in gnus mode
This commit is contained in:
committed by
Dirk-Jan C. Binnema
parent
c4f46966e7
commit
a132f5c21f
@ -398,6 +398,9 @@ article-mode."
|
|||||||
(run-hooks 'gnus-article-decode-hook)
|
(run-hooks 'gnus-article-decode-hook)
|
||||||
(let ((mu4e~view-rendering t) ; customize gnus in mu4e
|
(let ((mu4e~view-rendering t) ; customize gnus in mu4e
|
||||||
(max-specpdl-size mu4e-view-max-specpdl-size)
|
(max-specpdl-size mu4e-view-max-specpdl-size)
|
||||||
|
(gnus-icalendar-additional-identities (mu4e-personal-addresses))
|
||||||
|
;; Possibly add headers (before "Attachments")
|
||||||
|
(gnus-display-mime-function (mu4e~view-gnus-display-mime msg))
|
||||||
(gnus-icalendar-additional-identities (mu4e-personal-addresses)))
|
(gnus-icalendar-additional-identities (mu4e-personal-addresses)))
|
||||||
(gnus-article-prepare-display))
|
(gnus-article-prepare-display))
|
||||||
(mu4e-view-mode)
|
(mu4e-view-mode)
|
||||||
@ -406,6 +409,60 @@ article-mode."
|
|||||||
(set-buffer-modified-p nil)
|
(set-buffer-modified-p nil)
|
||||||
(read-only-mode))))
|
(read-only-mode))))
|
||||||
|
|
||||||
|
(defun mu4e~view-gnus-display-mime (msg)
|
||||||
|
"Same as `gnus-display-mime' but add a mu4e headers to MSG."
|
||||||
|
(lambda (&optional ihandles)
|
||||||
|
(gnus-display-mime ihandles)
|
||||||
|
(unless ihandles
|
||||||
|
(save-restriction
|
||||||
|
(article-goto-body)
|
||||||
|
(forward-line -1)
|
||||||
|
(narrow-to-region (point) (point))
|
||||||
|
(dolist (field mu4e-view-fields)
|
||||||
|
(let ((fieldval (mu4e-message-field msg field)))
|
||||||
|
(cl-case field
|
||||||
|
((:path :maildir :user-agent :mailing-list :message-id)
|
||||||
|
(mu4e~view-gnus-insert-header field fieldval))
|
||||||
|
((:flags :tags)
|
||||||
|
(let ((flags (mapconcat (lambda (flag)
|
||||||
|
(if (symbolp flag)
|
||||||
|
(symbol-name flag)
|
||||||
|
flag)) fieldval ", ")))
|
||||||
|
(mu4e~view-gnus-insert-header field flags)))
|
||||||
|
(:size (mu4e~view-gnus-insert-header
|
||||||
|
field (mu4e-display-size fieldval)))
|
||||||
|
((:subject :to :from :cc :bcc :from-or-to :date :attachments
|
||||||
|
:signature :decryption)) ; handled by Gnus
|
||||||
|
(t
|
||||||
|
(mu4e~view-gnus-insert-header-custom msg field))
|
||||||
|
)))
|
||||||
|
(let ((gnus-treatment-function-alist
|
||||||
|
'((gnus-treat-highlight-headers
|
||||||
|
gnus-article-highlight-headers))))
|
||||||
|
(gnus-treat-article 'head))))))
|
||||||
|
|
||||||
|
(defun mu4e~view-gnus-insert-header (field val)
|
||||||
|
"Insert a header FIELD with value VAL in Gnus article view."
|
||||||
|
(let* ((info (cdr (assoc field mu4e-header-info)))
|
||||||
|
(key (plist-get info :name))
|
||||||
|
(help (plist-get info :help)))
|
||||||
|
(if (and val (> (length val) 0))
|
||||||
|
(insert (propertize (concat key ":") 'help-echo help)
|
||||||
|
" " val "\n"))))
|
||||||
|
|
||||||
|
(defun mu4e~view-gnus-insert-header-custom (msg field)
|
||||||
|
"Insert the custom FIELD in Gnus article view."
|
||||||
|
(let* ((info (cdr-safe (or (assoc field mu4e-header-info-custom)
|
||||||
|
(mu4e-error "custom field %S not found" field))))
|
||||||
|
(key (plist-get info :name))
|
||||||
|
(func (or (plist-get info :function)
|
||||||
|
(mu4e-error "no :function defined for custom field %S %S"
|
||||||
|
field info)))
|
||||||
|
(val (funcall func msg))
|
||||||
|
(help (plist-get info :help)))
|
||||||
|
(when (and val (> (length val) 0))
|
||||||
|
(insert (propertize (concat key ":") 'help-echo help) " " val "\n"))))
|
||||||
|
|
||||||
(defun mu4e~view-get-property-from-event (prop)
|
(defun mu4e~view-get-property-from-event (prop)
|
||||||
"Get the property PROP at point, or the location of the mouse.
|
"Get the property PROP at point, or the location of the mouse.
|
||||||
The action is chosen based on the `last-command-event'.
|
The action is chosen based on the `last-command-event'.
|
||||||
|
|||||||
Reference in New Issue
Block a user