# HG changeset patch # User Miles Bader # Date 1220179423 0 # Node ID 5b7eb18818c149cdd949a63cf501da891339b7b2 # Parent 170486ace2df74ebfe2075e4a49ee53851e3976e Merge from gnus--devo--0 Revision: emacs@sv.gnu.org/emacs--devo--0--patch-1392 diff -r 170486ace2df -r 5b7eb18818c1 lisp/gnus/ChangeLog --- 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 + + * gnus-spec.el (gnus-parse-simple-format): Revert last patch. + +2008-08-29 Katsumi Yamaoka + + * gnus-spec.el (gnus-parse-simple-format): Remove trailing whitespace. + +2008-08-21 Teodor Zlatanov + + * 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 * gnus-art.el (gnus-article-next-page): Respect `scroll-margin' when diff -r 170486ace2df -r 5b7eb18818c1 lisp/gnus/gnus-registry.el --- 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))