Use mu4e-query-rewrite-function also for computing bookmark counts

Until now, the bookmark queries were sent to mu in their original form.  Thus,
if you have `mu4e-query-rewrite-function` set, the numbers shown next to the
bookmarks didn't reflect the actual number of query results you'd get when
opening a bookmark view.

With this commit, the `mu4e-query-rewrite-function` is applied and the result
is sent to mu for evaluation (in `mu4e~start`) and the likewise the rewritten
queries are used to find the matching one in the last query results (in
`mu4e~main-bookmarks`).

* mu4e/mu4e-utils.el (mu4e~start): Send the rewritten queries for evaluation to
mu.
* mu4e/mu4e-main.el (mu4e~main-bookmarks): Compare last mu query results with
rewritten queries.
This commit is contained in:
Tassilo Horn
2020-12-13 17:06:11 +01:00
parent 3ff8fd165f
commit fe6cbf5949
2 changed files with 5 additions and 2 deletions

View File

@ -125,7 +125,8 @@ clicked."
for bm in bmks for bm in bmks
for key = (string (plist-get bm :key)) for key = (string (plist-get bm :key))
for name = (plist-get bm :name) for name = (plist-get bm :name)
for query = (plist-get bm :query) for query = (funcall (or mu4e-query-rewrite-function #'identity)
(plist-get bm :query))
for qcounts = (and (stringp query) for qcounts = (and (stringp query)
(cl-loop for q in queries (cl-loop for q in queries
when (string= when (string=

View File

@ -826,7 +826,9 @@ When successful, call FUNC (if non-nil) afterwards."
(setq mu4e-pong-func (lambda (info) (mu4e~pong-handler info func))) (setq mu4e-pong-func (lambda (info) (mu4e~pong-handler info func)))
(mu4e~proc-ping (mu4e~proc-ping
(mapcar ;; send it a list of queries we'd like to see read/unread info for (mapcar ;; send it a list of queries we'd like to see read/unread info for
(lambda (bm) (plist-get bm :query)) (lambda (bm)
(funcall (or mu4e-query-rewrite-function #'identity)
(plist-get bm :query)))
;; exclude bookmarks that are not strings, and with certain flags ;; exclude bookmarks that are not strings, and with certain flags
(seq-filter (lambda (bm) (seq-filter (lambda (bm)
(and (stringp (plist-get bm :query)) (and (stringp (plist-get bm :query))