]> git.eshelyaron.com Git - emacs.git/commitdiff
(spam-group-ham-mark-p, spam-group-spam-mark-p)
authorReiner Steib <Reiner.Steib@gmx.de>
Thu, 19 Jan 2006 21:42:22 +0000 (21:42 +0000)
committerReiner Steib <Reiner.Steib@gmx.de>
Thu, 19 Jan 2006 21:42:22 +0000 (21:42 +0000)
(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.

lisp/gnus/ChangeLog
lisp/gnus/spam.el

index 6e0405c24eb886d468c9d665487cd1610fe9c329..7ad94aee8f02df27ce552d8872c5f1aa1de8ae47 100644 (file)
@@ -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.
index 8b722c95586293ce7959da9a4da7380a35d626b1..32de2f60e22a7458fe54b62f326e1c21d09ae812 100644 (file)
@@ -467,14 +467,28 @@ spamoracle database."
   "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 @@ functions")
       (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