* mu4e: let mu4e-message-contact-field-matches accept lists of regexps to

match as well.
This commit is contained in:
djcb
2012-10-20 16:07:01 +03:00
parent 37f51515ed
commit 88e76d50df

View File

@ -170,17 +170,24 @@ function prefers the text part, but this can be changed by setting
(defun mu4e-message-contact-field-matches (msg cfield rx)
"Checks whether any of the of the contacts in field
CFIELD (either :to, :from, :cc or :bcc) of msg MSG matches (with
their name or e-mail address) regular expressions RX. If there is a
their name or e-mail address) regular expressions RX. If there is a
match, return non-nil; otherwise return nil. RX can also be a list
of regular expressions, in which case any of those are tried for a
match."
(unless (member cfield '(:to :from :bcc :cc))
(mu4e-error "Not a contacts field (%S)" cfield))
(when (find-if
(lambda (ct)
(let ((name (car ct)) (email (cdr ct)))
(or
(and name (string-match rx name))
(and email (string-match rx email)))))
(mu4e-message-field msg cfield))
(mu4e-error "Not a contacts field (%S)" cfield))
(if (listp rx)
;; if rx is a list, try each one of them for a match
(find-if
(lambda (a-rx) (mu4e-message-contact-field-matches msg cfield a-rx))
rx)
;; not a list, check the rx
(find-if
(lambda (ct)
(let ((name (car ct)) (email (cdr ct)))
(or
(and name (string-match rx name))
(and email (string-match rx email)))))
(mu4e-message-field msg cfield))))