mu4e: implement :hide-if-no-unread

Make mu4e-maildir-shortcut and mu4e-bookmarks understand a property
:hide-if-no-unread~, which hides the maildir/bookmark from the main-view
if there are no unread messages which the corresponding query.
This commit is contained in:
Dirk-Jan C. Binnema
2025-03-08 11:36:40 +02:00
parent 5608892349
commit a15e640eb7
7 changed files with 100 additions and 38 deletions

View File

@ -228,25 +228,21 @@ bookmark or maildir."
(list
:name name
:query query
:key (plist-get item :key)
:count count
:unread unread
:delta-count (- count baseline-count)
:delta-unread delta-unread)))
;; remember the *effective* query too; we don't really need it, but
;; useful for debugging.
(unless (string= query effective-query)
(plist-put value :effective-query effective-query))
;;for matching maildir shortcuts
(when maildir (plist-put value :maildir maildir))
(setq value (plist-put value :effective-query effective-query))
(setq value (plist-put value :maildir maildir))
;; copy some other items from item.
(mu4e-plist-do (lambda (k v)
(when (memq k '(:key :maildir :hide :hide-if-no-unread
:hide-unread))
(setq value (plist-put value k v)))) item)
;; nil props bring me discomfort
(when (plist-get item :favorite)
(plist-put value :favorite t))
(when (plist-get item :hide)
(plist-put value :hide t))
(when (plist-get item :hide-unread)
(plist-put value :hide-unread t))
value))
(mu4e-plist-remove-nils value)))
data))
(defun mu4e-query-items (&optional type)