(nnimap-make-thread-query): New utility function to format a thread query.
authorAndrew Cohen <cohen@andy.bu.edu>
Wed, 20 Jul 2011 12:48:15 +0000 (08:48 -0400)
committerAndrew Cohen <cohen@andy.bu.edu>
Wed, 20 Jul 2011 12:48:15 +0000 (08:48 -0400)
lisp/ChangeLog
lisp/nnimap.el

index d150347..d13f4e3 100644 (file)
@@ -1,5 +1,9 @@
 2011-07-20  Andrew Cohen  <cohen@andy.bu.edu>
 
+       * nnimap.el (nnimap-make-thread-query): New utility function to format
+       an imap thread search query.
+       (nnimap-request-thread): Use it.
+
        * gnus-sum.el (gnus-handle-ephemeral-exit): Ensure we are setting the
        right select-method if we are not going back to the group buffer.
 
index ef5bee7..3855227 100644 (file)
@@ -1567,25 +1567,14 @@ textual parts.")
 
 (deffoo nnimap-request-thread (header &optional group server)
   (when (nnimap-possibly-change-group group server)
-      (let* ((id (mail-header-id header))
-        (refs (split-string
-               (or (mail-header-references header)
-                   "")))
-        (cmd (let ((value
-                    (format
-                     "(OR HEADER REFERENCES %s HEADER Message-Id %s)"
-                     id id)))
-               (dolist (refid refs value)
-                 (setq value (format
-                              "(OR (OR HEADER Message-Id %s HEADER REFERENCES %s) %s)"
-                              refid refid value)))))
-        (result (with-current-buffer (nnimap-buffer)
-                  (nnimap-command  "UID SEARCH %s" cmd))))
-    (when result
-      (gnus-fetch-headers
-       (and (car result) (delete 0 (mapcar #'string-to-number
-                                          (cdr (assoc "SEARCH" (cdr result))))))
-       nil t)))))
+    (let* ((cmd (nnimap-make-thread-query header))
+          (result (with-current-buffer (nnimap-buffer)
+                    (nnimap-command  "UID SEARCH %s" cmd))))
+      (when result
+       (gnus-fetch-headers
+        (and (car result) (delete 0 (mapcar #'string-to-number
+                                            (cdr (assoc "SEARCH" (cdr result))))))
+        nil t)))))
 
 (defun nnimap-possibly-change-group (group server)
   (let ((open-result t))
@@ -1951,6 +1940,21 @@ textual parts.")
                  group-art))
          nnimap-incoming-split-list)))
 
+(defun nnimap-make-thread-query (header)
+  (let* ((id  (mail-header-id header))
+        (refs (split-string
+               (or (mail-header-references header)
+                   "")))
+       (value
+        (format
+         "(OR HEADER REFERENCES %s HEADER Message-Id %s)"
+         id id)))
+    (dolist (refid refs value)
+      (setq value (format
+                  "(OR (OR HEADER Message-Id %s HEADER REFERENCES %s) %s)"
+                  refid refid value)))))
+
+
 (provide 'nnimap)
 
 ;;; nnimap.el ends here