changeset 97898:5b7eb18818c1

Merge from gnus--devo--0 Revision: emacs@sv.gnu.org/emacs--devo--0--patch-1392
author Miles Bader <miles@gnu.org>
date Sun, 31 Aug 2008 10:43:43 +0000
parents 170486ace2df
children 92d8f6972f8a
files lisp/gnus/ChangeLog lisp/gnus/gnus-registry.el
diffstat 2 files changed, 35 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/gnus/ChangeLog	Sun Aug 31 10:12:04 2008 +0000
+++ b/lisp/gnus/ChangeLog	Sun Aug 31 10:43:43 2008 +0000
@@ -1,3 +1,18 @@
+2008-08-30  Teodor Zlatanov  <tzz@lifelogs.com>
+
+	* gnus-spec.el (gnus-parse-simple-format): Revert last patch.
+
+2008-08-29  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* gnus-spec.el (gnus-parse-simple-format): Remove trailing whitespace.
+
+2008-08-21  Teodor Zlatanov  <tzz@lifelogs.com>
+
+	* gnus-registry.el (gnus-registry-max-track-groups): New variable to
+	prevent tracking too many groups.
+	(gnus-registry-split-fancy-with-parent, gnus-registry-fetch-groups):
+	Use it.
+
 2008-08-11  Ralf Angeli  <angeli@caeruleus.net>
 
 	* gnus-art.el (gnus-article-next-page): Respect `scroll-margin' when
--- a/lisp/gnus/gnus-registry.el	Sun Aug 31 10:12:04 2008 +0000
+++ b/lisp/gnus/gnus-registry.el	Sun Aug 31 10:43:43 2008 +0000
@@ -149,6 +149,12 @@
   :group 'gnus-registry
   :type 'boolean)
 
+(defcustom gnus-registry-max-track-groups 20
+  "The maximum number of non-unique group matches to check for a message ID."
+  :group 'gnus-registry
+  :type '(radio (const :format "Unlimited " nil)
+		(integer :format "Maximum non-unique matches: %v")))
+
 (defcustom gnus-registry-track-extra nil
   "Whether the registry should track extra data about a message.
 The Subject and Sender (From:) headers are currently tracked this
@@ -506,7 +512,9 @@
 	 9
 	 "%s is looking for matches for reference %s from [%s]"
 	 log-agent reference refstr)
-	(dolist (group (gnus-registry-fetch-groups reference))
+	(dolist (group (gnus-registry-fetch-groups 
+			reference 
+			gnus-registry-max-track-groups))
 	  (when (and group (gnus-registry-follow-group-p group))
 	    (gnus-message
 	     7
@@ -530,7 +538,9 @@
 	       matches)
 	   (when (and this-sender
 		      (equal sender this-sender))
-	     (let ((groups (gnus-registry-fetch-groups key)))
+	     (let ((groups (gnus-registry-fetch-groups 
+			    key
+			    gnus-registry-max-track-groups)))
 	       (dolist (group groups)
 		 (push group found-full)
 		 (setq found (append (list group) (delete group found)))))
@@ -557,7 +567,9 @@
 	       matches)
 	   (when (and this-subject
 		      (equal subject this-subject))
-	     (let ((groups (gnus-registry-fetch-groups key)))
+	     (let ((groups (gnus-registry-fetch-groups 
+			    key
+			    gnus-registry-max-track-groups)))
 	       (dolist (group groups)
 		 (push group found-full)
 		 (setq found (append (list group) (delete group found)))))
@@ -1002,8 +1014,8 @@
 		       crumb
 		     (gnus-group-short-name crumb))))))))
 
-(defun gnus-registry-fetch-groups (id)
-  "Get the groups of a message, based on the message ID."
+(defun gnus-registry-fetch-groups (id &optional max)
+  "Get the groups (up to MAX, if given) of a message, based on the message ID."
   (let ((trail (gethash id gnus-registry-hashtb))
 	groups)
     (dolist (crumb trail)
@@ -1015,7 +1027,9 @@
 	  (if (or (not (stringp crumb)) gnus-registry-use-long-group-names)
 	      crumb
 	    (gnus-group-short-name crumb))
-	 groups))))
+	 groups))
+	(when (and max (> (length groups) max))
+	  (return))))
     ;; return the list of groups
     groups))