emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] scratch/gnus-search 7f21251 29/30: Don't parse the address


From: Eric Abrahamsen
Subject: [Emacs-diffs] scratch/gnus-search 7f21251 29/30: Don't parse the address: key
Date: Thu, 1 Jun 2017 03:50:24 -0400 (EDT)

branch: scratch/gnus-search
commit 7f21251a564b81a2825e1a8758785d7ab3a4fc35
Author: Eric Abrahamsen <address@hidden>
Commit: Eric Abrahamsen <address@hidden>

    Don't parse the address: key
    
    * lisp/gnus/gnus-search.el (gnus-search-query-parse-kv): Allow this
      key to pass unmolested. Handle it in the individual search engines.
      (gnus-search-query-parse-contact): Produce the "address" key as
      necessary.
      (gnus-search-transform-expression): Handle "address" key explicitly
      in imap, notmuch, and namazu backends.
---
 lisp/gnus/gnus-search.el | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/lisp/gnus/gnus-search.el b/lisp/gnus/gnus-search.el
index 4167582..af56c4b 100644
--- a/lisp/gnus/gnus-search.el
+++ b/lisp/gnus/gnus-search.el
@@ -594,8 +594,6 @@ in as a string, goes out as a symbol."
       (setq value (gnus-search-query-parse-date value)))
      ((string-match-p "contact" key)
       (setq return (gnus-search-query-parse-contact key value)))
-     ((equal key "address")
-      (setq return `(or (sender . ,value) (recipient . ,value))))
      ((equal key "mark")
       (setq value (gnus-search-query-parse-mark value))))
     (or return
@@ -702,7 +700,7 @@ chunk of query syntax."
            ("contact-to"
             (list (cons 'recipient a)))
            ("contact"
-            `(or (recipient . ,a) (sender . ,a)))))
+            (list (cons 'address a)))))
        addresses)))))
 
 (defun gnus-search-query-expand-key (key)
@@ -1278,6 +1276,12 @@ boolean instead."
               (format
               "to:%s or (cc:%s or bcc:%s)"
               (cdr expr) (cdr expr) (cdr expr)))))
+     ((eq (car expr) 'address)
+      (gnus-search-transform
+       engine (gnus-search-parse-query
+              (format
+              "from:%s or (to:%s or (cc:%s or bcc:%s))"
+              (cdr expr) (cdr expr) (cdr expr) (cdr expr)))))
      ((memq (car expr) '(before since on sentbefore senton sentsince))
       ;; Ignore dates given as strings.
       (when (listp (cdr expr))
@@ -1575,6 +1579,9 @@ fudges a relevancy score of 100."
    ;; for now.
    ((memq (car expr) '(subject from to))
     (format "+%s:%s" (car expr) (cdr expr)))
+   ((eql (car expr) 'address)
+    (gnus-search-transform engine `((or (from . ,(cdr expr))
+                                       (to . ,(cdr expr))))))
    ((eq (car expr) 'id)
     (format "+message-id:%s" (cdr expr)))
    (t (ignore-errors (cl-call-next-method)))))
@@ -1627,6 +1634,7 @@ Namazu provides a little more information, for instance a 
score."
   ;; Swap keywords as necessary.
   (cl-case (car expr)
     (sender (setcar expr 'from))
+    ;; Notmuch's "to" is already equivalent to our "recipient".
     (recipient (setcar expr 'to))
     (mark (setcar expr 'tag)))
   ;; Then actually format the results.
@@ -1646,7 +1654,10 @@ Namazu provides a little more information, for instance 
a score."
                               (format "%d/%d/%d" m d y))))))
     (cond
      ((consp (car expr))
-      (format "(%s)") (gnus-search-transform engine expr))
+       (format "(%s)" (gnus-search-transform engine expr)))
+     ((eql (car expr) 'address)
+      (gnus-search-transform engine `((or (from . ,(cdr expr))
+                                         (to . ,(cdr expr))))))
      ((eql (car expr) 'body)
       (cdr expr))
      ((memq (car expr) '(from to subject attachment mimetype tag id



reply via email to

[Prev in Thread] Current Thread [Next in Thread]