]> git.eshelyaron.com Git - emacs.git/commitdiff
Small improvements to handling of IMAP mark search
authorEric Abrahamsen <eric@ericabrahamsen.net>
Sat, 26 Jun 2021 03:42:16 +0000 (20:42 -0700)
committerEric Abrahamsen <eric@ericabrahamsen.net>
Sat, 26 Jun 2021 03:42:16 +0000 (20:42 -0700)
* 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".

lisp/gnus/gnus-search.el

index fc9f8684f6394623fe518e9cc7529560fc65bd48..70bde264c11ac474189df3cb90b59bb17d7e9e6c 100644 (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.