Fix up nnir to work with the new nnimap.
authorLars Magne Ingebrigtsen <larsi@quimbies.gnus.org>
Thu, 23 Sep 2010 17:33:03 +0000 (19:33 +0200)
committerLars Magne Ingebrigtsen <larsi@quimbies.gnus.org>
Thu, 23 Sep 2010 17:33:03 +0000 (19:33 +0200)
From Andrew Cohen.

lisp/ChangeLog
lisp/nnir.el

index 3bd7d50..7080737 100644 (file)
@@ -1,3 +1,7 @@
+2010-09-23  Andrew Cohen  <cohen@andy.bu.edu>
+
+       * nnir.el (nnir-run-imap): Fix up nnir to work with the new nnimap.
+
 2010-09-23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
        * nnimap.el (nnimap-transform-headers): Don't bug out on invalid
index 954b489..9fe37ba 100644 (file)
@@ -967,23 +967,27 @@ details on the language and supported extensions"
          (defs (caddr (gnus-server-to-method srv)))
          (criteria (or (cdr (assq 'criteria query))
                        nnir-imap-search-field))
-         artlist buf)
+         (gnus-inhibit-demon t)
+         artlist)
       (message "Opening server %s" server)
       (condition-case ()
-         (when (nnimap-open-server server defs) ;; xxx
-           (setq buf nnimap-server-buffer) ;; xxx
-           (message "Searching %s..." group)
-            (let ((arts 0)
-                  (mbx (gnus-group-real-name group)))
-              (when (imap-mailbox-select mbx nil buf)
-                (mapc
-                 (lambda (artnum)
-                   (push (vector group artnum 1) artlist)
-                   (setq arts (1+ arts)))
-                 (imap-search (nnir-imap-make-query criteria qstring) buf))
-                (message "Searching %s... %d matches" mbx arts)))
-            (message "Searching %s...done" group))
-        (quit nil))
+         (when (nnimap-possibly-change-group (gnus-group-short-name group) server)
+           (with-current-buffer (nnimap-buffer)
+             (message "Searching %s..." group)
+             (let ((arts 0)
+                   (result
+                    (nnimap-command "UID SEARCH  %s" 
+                                    (nnir-imap-make-query criteria qstring))))
+               (mapc
+                (lambda (artnum)
+                  (push (vector group artnum 1) artlist)
+                  (setq arts (1+ arts)))
+                (and (car result)
+                     (delete 0 (mapcar #'string-to-number
+                                       (cdr (assoc "SEARCH" (cdr result)))))))
+               (message "Searching %s... %d matches" group arts)))
+           (message "Searching %s...done" group))
+       (quit nil))
       (reverse artlist))))
 
 (defun nnir-imap-make-query (criteria qstring)