Small improvements to handling of IMAP mark search

* lisp/gnus/gnus-search.el (gnus-search-imap-handle-flag): Use a
KEYWORD search for any mark starting with a "$", so
"mark:$hasattachment" goes through as "KEYWORD $hasattachment".
This commit is contained in:
Eric Abrahamsen 2021-06-25 20:42:16 -07:00
parent f2729dd8ee
commit 4d63a033a7

View file

@ -1278,17 +1278,23 @@ elements are present."
str)))
(defun gnus-search-imap-handle-flag (flag)
"Make sure string FLAG is something IMAP will recognize."
;; What else? What about the KEYWORD search key?
"Adjust string FLAG to help IMAP recognize it.
If it's one of the RFC3501 flags, make sure it's upcased.
Otherwise, if FLAG starts with a \"$\", treat as a KEYWORD
search. Otherwise, drop the flag."
(setq flag
(pcase flag
("flag" "flagged")
("read" "seen")
("replied" "answered")
(_ flag)))
(if (member flag '("seen" "answered" "deleted" "draft" "flagged"))
(upcase flag)
""))
(cond
((member flag '("seen" "answered" "deleted" "draft" "flagged" "recent"))
(upcase flag))
((string-prefix-p "$" flag)
(format "KEYWORD %s" flag))
;; TODO: Provide a user option to treat *all* marks as a KEYWORDs?
(t "")))
;;; Methods for the indexed search engines.