mu4e-thread-folding.el is a small library to enable threads folding in mu4e. This works by using overlays with an invisible property and setting hooks at the right place. It is possible to configure colors to better highlight a thread and also to have a prefix string indicating if a thread is folded or not. Note that when a thread is folded, any unread child remains visible.
The prefix string is displayed over the header line and it is thus
recommended to have an empty field at the start of an header line.
Have a look at mu4e-headers-fields
.
(require 'mu4e-thread-folding)
(add-to-list 'mu4e-header-info-custom
'(:empty . (:name "Empty"
:shortname ""
:function (lambda (msg) " "))))
(setq mu4e-headers-fields '((:empty . 2)
(:human-date . 12)
(:flags . 6)
(:mailing-list . 10)
(:from . 22)
(:subject . nil)))
(define-key mu4e-headers-mode-map (kbd "<tab>") 'mu4e-headers-toggle-at-point)
(define-key mu4e-headers-mode-map (kbd "<left>") 'mu4e-headers-fold-at-point)
(define-key mu4e-headers-mode-map (kbd "<S-left>") 'mu4e-headers-fold-all)
(define-key mu4e-headers-mode-map (kbd "<right>") 'mu4e-headers-unfold-at-point)
(define-key mu4e-headers-mode-map (kbd "<S-right>") 'mu4e-headers-unfold-all)
Options are accessible from the mu4e-thread-folding
customization group.