I’ve used mu4e as an email client for several years now and by and large I’m happy with it. However one big change with the 1.8 release was the switch from the “old” message view to the new one based on Gnus article mode. Functionally it’s fine but I did prefer the look and feel of the old message view. Despair not, as Gnus is sufficiently customisable that we can tweak it to look almost the same.

First we do the easy bit which is just setting the font-lock highlighting to match the old message view:

(use-package gnus
  :custom-face
  (gnus-signature ((t (:inherit font-lock-comment-face))))
  (gnus-header-name ((t (:inherit message-header-name :weight bold))))
  (gnus-header-from ((t (:inherit font-lock-variable-name-face))))
  (gnus-header-subject ((t (:inherit font-lock-type-face))))
  (gnus-header-content ((t (:inherit font-lock-type-face))))
  (gnus-cite-attribution ((t (:inherit default))))
  ...)

(I’m using the excellent use-package.)

These aren’t strictly the same as the original message view, but I prefer them to Gnus default of multiple subtly different shades of blue:

(gnus-cite-1 ((t (:foreground "light salmon"))))
(gnus-cite-2 ((t (:foreground "turquoise"))))
(gnus-cite-3 ((t (:foreground "light goldenrod"))))
(gnus-cite-4 ((t (:foreground "chartreuse2"))))

Mu4e used to highlight some of the header fields in different faces:

:config
(add-to-list 'gnus-header-face-alist '("To" nil font-lock-variable-name-face))
(add-to-list 'gnus-header-face-alist '("Reply-To" nil font-lock-variable-name-face))
(add-to-list 'gnus-header-face-alist '("Cc" nil font-lock-variable-name-face))

Restore the previous sort order for header fields:

(setq gnus-sorted-header-list '("^From:" "^To:" "^Reply-To:" "^Cc:" "^Subject:"
                                "^Flags:" "^Summary:" "^Keywords:" "^Newsgroups:"
                                "^Followup-To:" "^Date:" "^Organization:"))

Highlight the >, >>, etc. at the start of quote lines in addition to the quoted text itself (this really bothered me for some reason):

(defun filter-gnus-cite-args (args)
  "Replace PREFIX argument with the empty string."
  (setf (cadr args) "")
  args)
 
(advice-add 'gnus-cite-add-face :filter-args 'filter-gnus-cite-args)