aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Cohen2011-07-20 15:24:16 +0000
committerKatsumi Yamaoka2011-07-20 15:24:16 +0000
commit59f1b8949499f35fbdf3761acc8dd651fa69d335 (patch)
tree38f90825b120a4ff75888cbd9d7f094b094e4ad2
parentaf92e2477221da81020ea620dc25cb8eaef5c51f (diff)
downloademacs-59f1b8949499f35fbdf3761acc8dd651fa69d335.tar.gz
emacs-59f1b8949499f35fbdf3761acc8dd651fa69d335.zip
nnir.el (gnus-group-make-nnir-group): Allow optional search query argument.
(gnus-group-make-nnir-group, nnir-request-group, nnir-run-query): Use `nnir-address' to handle server info rather than passing an arg.
-rw-r--r--lisp/gnus/ChangeLog5
-rw-r--r--lisp/gnus/nnir.el23
2 files changed, 17 insertions, 11 deletions
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 3dc1fe142bf..a1cb003a8ff 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,5 +1,10 @@
12011-07-20 Andrew Cohen <cohen@andy.bu.edu> 12011-07-20 Andrew Cohen <cohen@andy.bu.edu>
2 2
3 * nnir.el (gnus-group-make-nnir-group): Allow optional search query
4 argument.
5 (gnus-group-make-nnir-group, nnir-request-group, nnir-run-query): Use
6 `nnir-address' to handle server info rather than passing an arg.
7
3 * nnimap.el (nnimap-make-thread-query): New utility function to format 8 * nnimap.el (nnimap-make-thread-query): New utility function to format
4 an imap thread search query. 9 an imap thread search query.
5 (nnimap-request-thread): Use it. 10 (nnimap-request-thread): Use it.
diff --git a/lisp/gnus/nnir.el b/lisp/gnus/nnir.el
index 3f140ef59d9..9840dddcb66 100644
--- a/lisp/gnus/nnir.el
+++ b/lisp/gnus/nnir.el
@@ -296,6 +296,9 @@ is `(valuefunc member)'."
296(nnoo-declare nnir) 296(nnoo-declare nnir)
297(nnoo-define-basics nnir) 297(nnoo-define-basics nnir)
298 298
299(defvoo nnir-address nil
300 "The address of the nnir server.")
301
299(gnus-declare-backend "nnir" 'mail) 302(gnus-declare-backend "nnir" 'mail)
300 303
301 304
@@ -582,18 +585,17 @@ Add an entry here when adding a new search engine.")
582 585
583;; Gnus glue. 586;; Gnus glue.
584 587
585(defun gnus-group-make-nnir-group (nnir-extra-parms) 588(defun gnus-group-make-nnir-group (nnir-extra-parms &optional parms)
586 "Create an nnir group. Asks for query." 589 "Create an nnir group. Asks for query."
587 (interactive "P") 590 (interactive "P")
588 (setq nnir-current-query nil 591 (setq nnir-current-query nil
589 nnir-current-server nil 592 nnir-current-server nil
590 nnir-current-group-marked nil 593 nnir-current-group-marked nil
591 nnir-artlist nil) 594 nnir-artlist nil)
592 (let* ((query (read-string "Query: " nil 'nnir-search-history)) 595 (let* ((query (unless parms (read-string "Query: " nil 'nnir-search-history)))
593 (parms (list (cons 'query query))) 596 (parms (or parms (list (cons 'query query))))
594 (srv (if (gnus-server-server-name) 597 (srv (or (cdr (assq 'server parms)) (gnus-server-server-name) "nnir")))
595 "all" ""))) 598 (add-to-list 'parms (cons 'unique-id (message-unique-id)) t)
596 (add-to-list 'parms (cons 'unique-id (message-unique-id)) t)
597 (gnus-group-read-ephemeral-group 599 (gnus-group-read-ephemeral-group
598 (concat "nnir:" (prin1-to-string parms)) (list 'nnir srv) t 600 (concat "nnir:" (prin1-to-string parms)) (list 'nnir srv) t
599 (cons (current-buffer) gnus-current-window-configuration) 601 (cons (current-buffer) gnus-current-window-configuration)
@@ -617,7 +619,7 @@ Add an entry here when adding a new search engine.")
617 (equal server nnir-current-server))) 619 (equal server nnir-current-server)))
618 nnir-artlist 620 nnir-artlist
619 ;; Cache miss. 621 ;; Cache miss.
620 (setq nnir-artlist (nnir-run-query group server))) 622 (setq nnir-artlist (nnir-run-query group)))
621 (with-current-buffer nntp-server-buffer 623 (with-current-buffer nntp-server-buffer
622 (setq nnir-current-query group) 624 (setq nnir-current-query group)
623 (when server (setq nnir-current-server server)) 625 (when server (setq nnir-current-server server))
@@ -1594,14 +1596,13 @@ actually)."
1594 1596
1595(autoload 'gnus-group-topic-name "gnus-topic") 1597(autoload 'gnus-group-topic-name "gnus-topic")
1596 1598
1597(defun nnir-run-query (query nserver) 1599(defun nnir-run-query (query)
1598 "Invoke appropriate search engine function (see `nnir-engines'). 1600 "Invoke appropriate search engine function (see `nnir-engines').
1599 If some groups were process-marked, run the query for each of the groups 1601 If some groups were process-marked, run the query for each of the groups
1600 and concat the results." 1602 and concat the results."
1601 (let ((q (car (read-from-string query))) 1603 (let ((q (car (read-from-string query)))
1602 (groups (if (string= "all-ephemeral" nserver) 1604 (groups (if (not (string= "nnir" nnir-address))
1603 (with-current-buffer gnus-server-buffer 1605 (list (list nnir-address))
1604 (list (list (gnus-server-server-name))))
1605 (nnir-categorize 1606 (nnir-categorize
1606 (or gnus-group-marked 1607 (or gnus-group-marked
1607 (if (gnus-group-group-name) 1608 (if (gnus-group-group-name)