Fix typo.
[elisp/wanderlust.git] / elmo / elsp-spamfilter.el
index e5dcc55..491df20 100644 (file)
@@ -47,7 +47,7 @@
 
 (eval-and-compile
   (luna-define-class elsp-spamfilter (elsp-generic)
-                    (good-corpus bad-corpus))
+                    (good-corpus bad-corpus modified))
   (luna-define-internal-accessors 'elsp-spamfilter))
 
 (luna-define-method initialize-instance :around ((processor elsp-spamfilter)
     (elsp-spamfilter-set-bad-corpus-internal  processor spamf-bad-corpus)
     processor))
 
+(luna-define-method elmo-spam-modified-p ((processor elsp-spamfilter))
+  (elsp-spamfilter-modified-internal processor))
+
 (luna-define-method elmo-spam-save-status ((processor elsp-spamfilter))
   (spamf-save-corpus-to-file
    elmo-spam-spamfilter-corpus-filename
    (elsp-spamfilter-good-corpus-internal processor)
-   (elsp-spamfilter-bad-corpus-internal  processor)))
+   (elsp-spamfilter-bad-corpus-internal  processor))
+  (elsp-spamfilter-set-modified-internal processor nil))
 
-(defun elmo-spam-spamfilter-decode-buffer (buffer)
+(defun elsp-spamfilter-decode-buffer (buffer)
   (mime-display-message
    (mime-open-entity 'elmo-buffer buffer)
    (current-buffer)))
 
+(defsubst elsp-spamfilter-register-buffer-internal (processor buffer spam)
+  (spamf-register-words-buffer
+   (if spam
+       (elsp-spamfilter-bad-corpus-internal processor)
+     (elsp-spamfilter-good-corpus-internal processor))
+   buffer)
+  (elsp-spamfilter-set-modified-internal processor t))
+
 (luna-define-method elmo-spam-buffer-spam-p ((processor elsp-spamfilter)
-                                            buffer)
+                                            buffer &optional register)
   (with-temp-buffer
-    (elmo-spam-spamfilter-decode-buffer buffer)
-    (spamf-spam-buffer-p
-     (current-buffer)
-     (elsp-spamfilter-good-corpus-internal processor)
-     (elsp-spamfilter-bad-corpus-internal  processor))))
+    (elsp-spamfilter-decode-buffer buffer)
+    (let ((spam (spamf-spam-buffer-p
+                (current-buffer)
+                (elsp-spamfilter-good-corpus-internal processor)
+                (elsp-spamfilter-bad-corpus-internal  processor))))
+      (when register
+       (elsp-spamfilter-register-buffer-internal
+        processor (current-buffer) spam))
+      spam)))
 
 (luna-define-method elmo-spam-register-spam-buffer ((processor elsp-spamfilter)
-                                                   buffer)
+                                                   buffer &optional restore)
   (with-temp-buffer
-    (elmo-spam-spamfilter-decode-buffer buffer)
-    (spamf-register-good-buffer
-     (current-buffer)
-     (elsp-spamfilter-good-corpus-internal processor))))
+    (elsp-spamfilter-decode-buffer buffer)
+    (elsp-spamfilter-register-buffer-internal processor (current-buffer) t)))
 
 (luna-define-method elmo-spam-register-good-buffer ((processor elsp-spamfilter)
-                                                   buffer)
+                                                   buffer &optional restore)
   (with-temp-buffer
-    (elmo-spam-spamfilter-decode-buffer buffer)
-    (spamf-register-spam-buffer
-     (current-buffer)
-     (elsp-spamfilter-bad-corpus-internal  processor))))
+    (elsp-spamfilter-decode-buffer buffer)
+    (elsp-spamfilter-register-buffer-internal processor (current-buffer) nil)))
 
 (require 'product)
 (product-provide (provide 'elsp-spamfilter) (require 'elmo-version))