summaryrefslogtreecommitdiff
path: root/lisp/gnus/nnir.el
diff options
context:
space:
mode:
authorGnus developers <ding@gnus.org>2011-06-30 22:20:32 +0000
committerKatsumi Yamaoka <yamaoka@jpl.org>2011-06-30 22:20:32 +0000
commitb09c3fe0254f12755e3d7f45a8c9464f710e157e (patch)
tree12e75a6e464499d7d76f0076dbfa0b2685a04ebc /lisp/gnus/nnir.el
parent9ccd6e90d61cc3e995b1c37d3e6981fa511f6668 (diff)
gnus-group.el (gnus-read-ephemeral-emacs-bug-group): Take an optional quit window configuration.
auth-source.el (epg-context-set-passphrase-callback): Remove duplicate autoload. nnir.el (nnir-request-article): Allow requesting articles by Message-ID with nnimap. gnus-sum.el (gnus-refer-article-methods): Allow (nnir) entry to use current server. auth-source.el: Autoload EPA/EPG functions. (auth-source-netrc-use-gpg-tokens): Clarify that it should not be changed when EPA/EPG is not available. (auth-source-backend): Rename "arg" member to "data". (auth-source-backend-parse, auth-source-plstore-search) (auth-source-plstore-create): Use it.
Diffstat (limited to 'lisp/gnus/nnir.el')
-rw-r--r--lisp/gnus/nnir.el43
1 files changed, 30 insertions, 13 deletions
diff --git a/lisp/gnus/nnir.el b/lisp/gnus/nnir.el
index eaaac3f88c..f1a97dc59d 100644
--- a/lisp/gnus/nnir.el
+++ b/lisp/gnus/nnir.el
@@ -657,22 +657,39 @@ Add an entry here when adding a new search engine.")
'nov)))
(deffoo nnir-request-article (article &optional group server to-buffer)
- (if (stringp article)
+ (if (and (stringp article)
+ (not (eq 'nnimap (car (gnus-server-to-method server)))))
(nnheader-report
'nnir
- "nnir-retrieve-headers doesn't grok message ids: %s"
- article)
+ "nnir-retrieve-headers only groks message ids for nnimap servers: %s"
+ server)
(save-excursion
- (let ((artfullgroup (nnir-article-group article))
- (artno (nnir-article-number article)))
- (message "Requesting article %d from group %s"
- artno artfullgroup)
- (if to-buffer
- (with-current-buffer to-buffer
- (let ((gnus-article-decode-hook nil))
- (gnus-request-article-this-buffer artno artfullgroup)))
- (gnus-request-article artno artfullgroup))
- (cons artfullgroup artno)))))
+ (let ((article article)
+ query)
+ (when (stringp article)
+ (setq gnus-override-method (gnus-server-to-method server))
+ (setq query
+ (list
+ (cons 'query (format "HEADER Message-ID %s" article))
+ (cons 'unique-id article)
+ (cons 'criteria "")))
+ (unless (and (equal query nnir-current-query)
+ (equal server nnir-current-server))
+ (setq nnir-artlist (nnir-run-imap query server))
+ (setq nnir-current-query query)
+ (setq nnir-current-server server))
+ (setq article 1))
+ (unless (zerop (length nnir-artlist))
+ (let ((artfullgroup (nnir-article-group article))
+ (artno (nnir-article-number article)))
+ (message "Requesting article %d from group %s"
+ artno artfullgroup)
+ (if to-buffer
+ (with-current-buffer to-buffer
+ (let ((gnus-article-decode-hook nil))
+ (gnus-request-article-this-buffer artno artfullgroup)))
+ (gnus-request-article artno artfullgroup))
+ (cons artfullgroup artno)))))))
(deffoo nnir-request-move-article (article group server accept-form
&optional last internal-move-group)