changeset 68276:873a6f48b596

(spam-group-ham-mark-p, spam-group-spam-mark-p) (spam-group-spam-marks, spam-list-articles, spam-group-ham-marks): Revert 2006-01-08 change because the functions will be used in No Gnus.
author Reiner Steib <Reiner.Steib@gmx.de>
date Thu, 19 Jan 2006 21:42:22 +0000
parents a34c3ba8e4aa
children a4e264f94259
files lisp/gnus/ChangeLog lisp/gnus/spam.el
diffstat 2 files changed, 43 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/gnus/ChangeLog	Thu Jan 19 21:12:22 2006 +0000
+++ b/lisp/gnus/ChangeLog	Thu Jan 19 21:42:22 2006 +0000
@@ -1,3 +1,10 @@
+2006-01-19  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* spam.el (spam-group-ham-mark-p, spam-group-spam-mark-p)
+	(spam-group-spam-marks, spam-list-articles, spam-group-ham-marks):
+	Revert 2006-01-08 change because the functions will be used in No
+	Gnus.
+
 2006-01-16  Katsumi Yamaoka  <yamaoka@jpl.org>
 
 	* nnrss.el: Update copyright.
--- a/lisp/gnus/spam.el	Thu Jan 19 21:12:22 2006 +0000
+++ b/lisp/gnus/spam.el	Thu Jan 19 21:42:22 2006 +0000
@@ -467,14 +467,28 @@
   "Logical exclusive `or'."
   (and (or a b) (not (and a b))))
 
+(defun spam-group-ham-mark-p (group mark &optional spam)
+  (when (stringp group)
+    (let* ((marks (spam-group-ham-marks group spam))
+	   (marks (if (symbolp mark)
+		      marks
+		    (mapcar 'symbol-value marks))))
+      (memq mark marks))))
+
+(defun spam-group-spam-mark-p (group mark)
+  (spam-group-ham-mark-p group mark t))
+
 (defun spam-group-ham-marks (group &optional spam)
   (when (stringp group)
-    (let ((marks (car (if spam
-			  (gnus-parameter-spam-marks group)
-			(gnus-parameter-ham-marks group)))))
-      (if (listp (car marks))
-	  (car marks)
-	marks))))
+    (let* ((marks (if spam
+		      (gnus-parameter-spam-marks group)
+		    (gnus-parameter-ham-marks group)))
+	   (marks (car marks))
+	   (marks (if (listp (car marks)) (car marks) marks)))
+      marks)))
+
+(defun spam-group-spam-marks (group)
+  (spam-group-ham-marks group t))
 
 (defun spam-group-spam-contents-p (group)
   (if (stringp group)
@@ -1036,12 +1050,23 @@
       (nth 2 flist))))
 
 (defun spam-list-articles (articles classification)
-  (let ((marks (mapcar 'eval (spam-group-ham-marks gnus-newsgroup-name
-						   (eq classification 'spam))))
-	list)
+  (let ((mark-check (if (eq classification 'spam)
+			'spam-group-spam-mark-p
+		      'spam-group-ham-mark-p))
+	list mark-cache-yes mark-cache-no)
     (dolist (article articles)
-      (if (memq (gnus-summary-article-mark article) marks)
-	  (push article list)))
+      (let ((mark (gnus-summary-article-mark article)))
+	(unless (memq mark mark-cache-no)
+	  (if (memq mark mark-cache-yes)
+	      (push article list)
+	    ;; else, we have to actually check the mark
+	    (if (funcall mark-check
+			 gnus-newsgroup-name
+			 mark)
+		(progn
+		  (push article list)
+		  (push mark mark-cache-yes))
+	      (push mark mark-cache-no))))))
     list))
 
 (defun spam-register-routine (classification