[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r105314: Merge changes made in Gnus t
From: |
Katsumi Yamaoka |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r105314: Merge changes made in Gnus trunk. |
Date: |
Sun, 24 Jul 2011 00:19:29 +0000 |
User-agent: |
Bazaar (2.3.1) |
------------------------------------------------------------
revno: 105314
author: Andrew Cohen <address@hidden>
committer: Katsumi Yamaoka <address@hidden>
branch nick: trunk
timestamp: Sun 2011-07-24 00:19:29 +0000
message:
Merge changes made in Gnus trunk.
nnir.el (nnir-search-thread): New function to make an nnir group based on a
thread query.
gnus-sum.el (gnus-refer-thread-use-nnir): New variable to control use of nnir
in thread referral.
(gnus-summary-refer-thread): Use it.
nnimap.el (nnimap-request-thread): Use it.
modified:
lisp/gnus/ChangeLog
lisp/gnus/gnus-sum.el
lisp/gnus/nnimap.el
lisp/gnus/nnir.el
=== modified file 'lisp/gnus/ChangeLog'
--- a/lisp/gnus/ChangeLog 2011-07-20 22:48:00 +0000
+++ b/lisp/gnus/ChangeLog 2011-07-24 00:19:29 +0000
@@ -1,3 +1,14 @@
+2011-07-23 Andrew Cohen <address@hidden>
+
+ * nnir.el (nnir-search-thread): New function to make an nnir group
+ based on a thread query.
+
+ * gnus-sum.el (gnus-refer-thread-use-nnir): New variable to control use
+ of nnir in thread referral.
+ (gnus-summary-refer-thread): Use it.
+
+ * nnimap.el (nnimap-request-thread): Use it.
+
2011-07-20 Lars Magne Ingebrigtsen <address@hidden>
* shr.el (shr-tag-comment): Ignore HTML comments.
=== modified file 'lisp/gnus/gnus-sum.el'
--- a/lisp/gnus/gnus-sum.el 2011-07-20 14:19:52 +0000
+++ b/lisp/gnus/gnus-sum.el 2011-07-24 00:19:29 +0000
@@ -118,6 +118,13 @@
:type '(choice number
(sexp :menu-tag "other" t)))
+(defcustom gnus-refer-thread-use-nnir nil
+ "*Use nnir to search an entire server when referring threads. A
+nil value will only search for thread-related articles in the
+current group."
+ :group 'gnus-thread
+ :type 'boolean)
+
(defcustom gnus-summary-make-false-root 'adopt
"*nil means that Gnus won't gather loose threads.
If the root of a thread has expired or been read in a previous
@@ -8972,11 +8979,16 @@
result))
(defun gnus-summary-refer-thread (&optional limit)
- "Fetch all articles in the current thread.
-If no backend-specific 'request-thread function is available
-fetch LIMIT (the numerical prefix) old headers. If LIMIT is nil
-fetch what's specified by the `gnus-refer-thread-limit'
-variable."
+ "Fetch all articles in the current thread. For backends that
+know how to search for threads (currently only 'nnimap) a
+non-numeric prefix arg will use nnir to search the entire
+server; without a prefix arg only the current group is
+searched. If the variable `gnus-refer-thread-use-nnir' is
+non-nil the prefix arg has the reverse meaning. If no
+backend-specific 'request-thread function is available fetch
+LIMIT (the numerical prefix) old headers. If LIMIT is
+non-numeric or nil fetch the number specified by the
+`gnus-refer-thread-limit' variable."
(interactive "P")
(gnus-warp-to-article)
(let* ((header (gnus-summary-article-header))
@@ -8984,13 +8996,16 @@
(gnus-inhibit-demon t)
(gnus-summary-ignore-duplicates t)
(gnus-read-all-available-headers t)
- (limit (if limit (prefix-numeric-value limit)
- gnus-refer-thread-limit))
+ (gnus-refer-thread-use-nnir
+ (if (and (not (null limit)) (listp limit))
+ (not gnus-refer-thread-use-nnir) gnus-refer-thread-use-nnir))
(new-headers
(if (gnus-check-backend-function
'request-thread gnus-newsgroup-name)
(gnus-request-thread header gnus-newsgroup-name)
- (let* ((last (if (numberp limit)
+ (let* ((limit (if (numberp limit) (prefix-numeric-value limit)
+ gnus-refer-thread-limit))
+ (last (if (numberp limit)
(min (+ (mail-header-number header)
limit)
gnus-newsgroup-highest)
@@ -9005,17 +9020,19 @@
(regexp-opt (append refs (list id subject)))))))
(gnus-fetch-headers (list last) (if (numberp limit)
(* 2 limit) limit) t)))))
- (dolist (header new-headers)
- (when (member (mail-header-number header) gnus-newsgroup-unselected)
- (push (mail-header-number header) gnus-newsgroup-unreads)
- (setq gnus-newsgroup-unselected
- (delete (mail-header-number header) gnus-newsgroup-unselected))))
- (setq gnus-newsgroup-headers
- (gnus-delete-duplicate-headers
- (gnus-merge
- 'list gnus-newsgroup-headers new-headers
- 'gnus-article-sort-by-number)))
- (gnus-summary-limit-include-thread id)))
+ (when (listp new-headers)
+ (dolist (header new-headers)
+ (when (member (mail-header-number header) gnus-newsgroup-unselected)
+ (push (mail-header-number header) gnus-newsgroup-unreads)
+ (setq gnus-newsgroup-unselected
+ (delete (mail-header-number header)
+ gnus-newsgroup-unselected))))
+ (setq gnus-newsgroup-headers
+ (gnus-delete-duplicate-headers
+ (gnus-merge
+ 'list gnus-newsgroup-headers new-headers
+ 'gnus-article-sort-by-number)))
+ (gnus-summary-limit-include-thread id))))
(defun gnus-summary-refer-article (message-id)
"Fetch an article specified by MESSAGE-ID."
=== modified file 'lisp/gnus/nnimap.el'
--- a/lisp/gnus/nnimap.el 2011-07-20 14:19:52 +0000
+++ b/lisp/gnus/nnimap.el 2011-07-24 00:19:29 +0000
@@ -1566,15 +1566,17 @@
(articles &optional limit force-new dependencies))
(deffoo nnimap-request-thread (header &optional group server)
- (when (nnimap-possibly-change-group group server)
- (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)))))
+ (if gnus-refer-thread-use-nnir
+ (nnir-search-thread header)
+ (when (nnimap-possibly-change-group group server)
+ (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))
=== modified file 'lisp/gnus/nnir.el'
--- a/lisp/gnus/nnir.el 2011-07-20 15:24:16 +0000
+++ b/lisp/gnus/nnir.el 2011-07-24 00:19:29 +0000
@@ -289,6 +289,7 @@
(autoload 'nnimap-buffer "nnimap")
(autoload 'nnimap-command "nnimap")
(autoload 'nnimap-possibly-change-group "nnimap")
+ (autoload 'nnimap-make-thread-query "nnimap")
(autoload 'gnus-registry-action "gnus-registry")
(defvar gnus-registry-install))
@@ -1649,6 +1650,16 @@
(nnir-open-server server)))
+(defun nnir-search-thread (header)
+ "Make an nnir group based on the thread containing the article header"
+ (let ((parm (list
+ (cons 'query
+ (nnimap-make-thread-query header))
+ (cons 'criteria "")
+ (cons 'server (gnus-method-to-server
+ (gnus-find-method-for-group
+ gnus-newsgroup-name))))))
+ (gnus-group-make-nnir-group nil parm)))
;; unused?
(defun nnir-artlist-groups (artlist)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r105314: Merge changes made in Gnus trunk.,
Katsumi Yamaoka <=