diff --git a/mu4e/mu4e-message.el b/mu4e/mu4e-message.el index 93408b12..474d3fd5 100644 --- a/mu4e/mu4e-message.el +++ b/mu4e/mu4e-message.el @@ -170,17 +170,24 @@ function prefers the text part, but this can be changed by setting "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 -match, return t otherwise nil." +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)) - t)) + (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)))) (defsubst mu4e-message-part-field (msgpart field)