diff options
| author | Andrew Cohen | 2011-07-20 15:24:16 +0000 |
|---|---|---|
| committer | Katsumi Yamaoka | 2011-07-20 15:24:16 +0000 |
| commit | 59f1b8949499f35fbdf3761acc8dd651fa69d335 (patch) | |
| tree | 38f90825b120a4ff75888cbd9d7f094b094e4ad2 | |
| parent | af92e2477221da81020ea620dc25cb8eaef5c51f (diff) | |
| download | emacs-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/ChangeLog | 5 | ||||
| -rw-r--r-- | lisp/gnus/nnir.el | 23 |
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 @@ | |||
| 1 | 2011-07-20 Andrew Cohen <cohen@andy.bu.edu> | 1 | 2011-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) |