make handle-date and handle-flag into separate functions
This commit is contained in:
parent
e29e14c710
commit
cdbbce4c74
|
@ -107,7 +107,31 @@ This can also be set per-server."
|
|||
(address (setf (car expr) 'contact))
|
||||
(id (setf (car expr) 'msgid))
|
||||
(attachment (setf (car expr) 'file)))
|
||||
(cl-flet ((mu-date (date)
|
||||
(cl-flet ()
|
||||
(cond
|
||||
((consp (car expr))
|
||||
(format "(%s)" (gnus-search-transform engine expr)))
|
||||
;; Explicitly leave out 'date as gnus-search will encode it
|
||||
;; first; it is handled later
|
||||
((memq (car expr) '(cc c bcc h from f to t subject s body b
|
||||
maildir m msgid i prio p flag g d
|
||||
size z embed e file j mime y tag x
|
||||
list v))
|
||||
(format "%s:%s" (car expr)
|
||||
(if (string-match "\\`\\*" (cdr expr))
|
||||
(replace-match "" nil nil (cdr expr))
|
||||
(cdr expr))))
|
||||
((eq (car expr) 'mark)
|
||||
(format "flag:%s" (gnus-search-mu-handle-flag (cdr expr))))
|
||||
((eq (car expr) 'date)
|
||||
(format "date:%s" (gnus-search-mu-handle-date (cdr expr))))
|
||||
((eq (car expr) 'before)
|
||||
(format "date:..%s" (gnus-search-mu-handle-date (cdr expr))))
|
||||
((eq (car expr) 'since)
|
||||
(format "date:%s.." (gnus-search-mu-handle-date (cdr expr))))
|
||||
(t (ignore-errors (cl-call-next-method))))))
|
||||
|
||||
(defun gnus-search-mu-handle-date (date)
|
||||
(if (stringp date)
|
||||
date
|
||||
(pcase date
|
||||
|
@ -128,36 +152,15 @@ This can also be set per-server."
|
|||
(format "%d-%02d" y m))
|
||||
(`(,d ,m ,y)
|
||||
(format "%d-%02d-%02d" y m d)))))
|
||||
(mu-flag (flag)
|
||||
|
||||
(defun gnus-search-mu-handle-flag (flag)
|
||||
;; Only change what doesn't match
|
||||
(cond ((string= flag "flag")
|
||||
"flagged")
|
||||
((string= flag "read")
|
||||
"seen")
|
||||
(t
|
||||
flag))))
|
||||
(cond
|
||||
((consp (car expr))
|
||||
(format "(%s)" (gnus-search-transform engine expr)))
|
||||
;; Explicitly leave out 'date as gnus-search will encode it
|
||||
;; first; it is handled later
|
||||
((memq (car expr) '(cc c bcc h from f to t subject s body b
|
||||
maildir m msgid i prio p flag g d
|
||||
size z embed e file j mime y tag x
|
||||
list v))
|
||||
(format "%s:%s" (car expr)
|
||||
(if (string-match "\\`\\*" (cdr expr))
|
||||
(replace-match "" nil nil (cdr expr))
|
||||
(cdr expr))))
|
||||
((eq (car expr) 'mark)
|
||||
(format "flag:%s" (mu-flag (cdr expr))))
|
||||
((eq (car expr) 'date)
|
||||
(format "date:%s" (mu-date (cdr expr))))
|
||||
((eq (car expr) 'before)
|
||||
(format "date:..%s" (mu-date (cdr expr))))
|
||||
((eq (car expr) 'since)
|
||||
(format "date:%s.." (mu-date (cdr expr))))
|
||||
(t (ignore-errors (cl-call-next-method))))))
|
||||
flag)))
|
||||
|
||||
|
||||
(cl-defmethod gnus-search-indexed-extract ((_engine gnus-search-mu))
|
||||
|
|
Loading…
Reference in New Issue