wl-spam-auto-check-marks)))
(defsubst wl-spam-map-spam-messages (folder numbers function &rest args)
- (let ((total (length numbers)))
- (message "Checking spam...")
- (elmo-with-progress-display (> total elmo-display-progress-threshold)
- (elmo-spam-check-spam total "Checking spam...")
- (dolist (number (elmo-spam-list-spam-messages (elmo-spam-processor)
- folder
- numbers))
- (apply function number args)))
- (message "Checking spam...done")))
+ (elmo-with-progress-display (elmo-spam-check-spam (length numbers))
+ "Checking spam"
+ (dolist (number (elmo-spam-list-spam-messages (elmo-spam-processor)
+ folder
+ numbers))
+ (apply function number args))))
(defun wl-spam-apply-partitions (folder partitions function msg)
(when partitions
(let ((total 0))
(dolist (partition partitions)
(setq total (+ total (length (cdr partition)))))
- (message msg)
- (elmo-with-progress-display (> total elmo-display-progress-threshold)
- (elmo-spam-register total msg)
+ (elmo-with-progress-display (elmo-spam-register total) msg
(dolist (partition partitions)
- (funcall function folder (cdr partition) (car partition))))
- (message (concat msg "done")))))
+ (funcall function folder (cdr partition) (car partition)))))))
(defun wl-spam-register-spam-messages (folder numbers)
- (let ((total (length numbers)))
- (message "Registering spam...")
- (elmo-with-progress-display (> total elmo-display-progress-threshold)
- (elmo-spam-register total "Registering spam...")
- (elmo-spam-register-spam-messages (elmo-spam-processor)
- folder
- numbers))
- (message "Registering spam...done")))
+ (elmo-with-progress-display (elmo-spam-register (length numbers))
+ "Registering spam"
+ (elmo-spam-register-spam-messages (elmo-spam-processor)
+ folder
+ numbers)))
(defun wl-spam-register-good-messages (folder numbers)
- (let ((total (length numbers)))
- (message "Registering good...")
- (elmo-with-progress-display (> total elmo-display-progress-threshold)
- (elmo-spam-register total "Registering good...")
- (elmo-spam-register-good-messages (elmo-spam-processor)
- folder
- numbers))
- (message "Registering good...done")))
+ (elmo-with-progress-display (elmo-spam-register (length numbers))
+ "Registering good"
+ (elmo-spam-register-good-messages (elmo-spam-processor)
+ folder
+ numbers)))
(defun wl-spam-save-status (&optional force)
(interactive "P")
(eval-when-compile
;; Avoid compile warnings
- (defalias-maybe 'wl-summary-spam 'ignore))
+ (defalias-maybe 'wl-summary-spam 'ignore)
+ (defalias-maybe 'wl-summary-unmark-spam 'ignore))
(defun wl-summary-test-spam (&optional folder number)
(interactive)
(number (or number (wl-summary-message-number)))
spam)
(message "Checking spam...")
- (when (setq spam (elmo-spam-message-spam-p (elmo-spam-processor)
- folder number))
- (wl-summary-spam number))
+ (if (setq spam (elmo-spam-message-spam-p (elmo-spam-processor)
+ folder number))
+ (wl-summary-spam number)
+ (wl-summary-unmark-spam number))
(message "Checking spam...done")
(when (interactive-p)
(message "No: %d is %sa spam message." number (if spam "" "not ")))))
+(defun wl-summary-test-spam-messages (folder numbers &rest args)
+ (elmo-with-progress-display (elmo-spam-check-spam (length numbers))
+ "Checking spam"
+ (let* ((spams (elmo-spam-list-spam-messages (elmo-spam-processor)
+ folder
+ numbers))
+ (goods (car (elmo-list-diff numbers spams))))
+ (dolist (number spams)
+ (wl-summary-spam number args))
+ (dolist (number goods)
+ (wl-summary-unmark-spam number)))))
+
(defun wl-summary-test-spam-region (beg end)
(interactive "r")
(let ((numbers (wl-summary-collect-numbers-region beg end)))
(cond (numbers
- (wl-spam-map-spam-messages wl-summary-buffer-elmo-folder
- numbers
- #'wl-summary-spam))
+ (wl-summary-test-spam-messages wl-summary-buffer-elmo-folder
+ numbers))
((interactive-p)
(message "No message to test.")))))
+(defun wl-thread-test-spam (&optional arg)
+ (interactive "P")
+ (wl-thread-call-region-func 'wl-summary-test-spam-region arg))
+
(defun wl-summary-mark-spam (&optional all)
"Set spam mark to messages which is spam classification."
(interactive "P")
(wl-spam-register-spam-messages wl-summary-buffer-elmo-folder
(list number)))))
+(defun wl-summary-register-as-spam-region (beg end)
+ (interactive "r")
+ (let ((numbers (wl-summary-collect-numbers-region beg end)))
+ (cond (numbers
+ (wl-spam-register-spam-messages wl-summary-buffer-elmo-folder
+ numbers))
+ ((interactive-p)
+ (message "No message to register as spam.")))))
+
+(defun wl-thread-register-as-spam (&optional arg)
+ (interactive "P")
+ (wl-thread-call-region-func 'wl-summary-register-as-spam-region arg))
+
(defun wl-summary-register-as-spam-all ()
(interactive)
(wl-spam-register-spam-messages wl-summary-buffer-elmo-folder
(wl-spam-register-good-messages wl-summary-buffer-elmo-folder
(list number)))))
+(defun wl-summary-register-as-good-region (beg end)
+ (interactive "r")
+ (let ((numbers (wl-summary-collect-numbers-region beg end)))
+ (cond (numbers
+ (wl-spam-register-good-messages wl-summary-buffer-elmo-folder
+ numbers))
+ ((interactive-p)
+ (message "No message to register as good.")))))
+
+(defun wl-thread-register-as-good (&optional arg)
+ (interactive "P")
+ (wl-thread-call-region-func 'wl-summary-register-as-good-region arg))
+
(defun wl-summary-register-as-good-all ()
(interactive)
(wl-spam-register-good-messages wl-summary-buffer-elmo-folder
(elmo-spam-register-spam-messages (elmo-spam-processor)
folder numbers
(eq domain 'good)))
- "Registering spam...")
+ "Registering spam")
(wl-summary-move-mark-list-messages mark-list
wl-spam-folder
- "Refiling spam...")))
+ "Refiling spam")))
(defun wl-summary-exec-action-refile-with-register (mark-list)
(let ((folder wl-summary-buffer-elmo-folder)
(elmo-spam-register-spam-messages (elmo-spam-processor)
folder numbers
(eq domain 'good)))
- "Registering spam...")
+ "Registering spam")
(wl-spam-apply-partitions
folder
(wl-filter-associations '(undecided spam)
(elmo-spam-register-good-messages (elmo-spam-processor)
folder numbers
(eq domain 'spam)))
- "Registering good...")
+ "Registering good")
;; execute refile messages
(wl-summary-exec-action-refile mark-list)))
wl-summary-skip-mark-list))))
(define-key wl-summary-mode-map "k" wl-summary-spam-map)
(define-key
+ wl-summary-mode-map "rkm" 'wl-summary-spam-region)
+ (define-key
wl-summary-mode-map "rkc" 'wl-summary-test-spam-region)
(define-key
+ wl-summary-mode-map "rks" 'wl-summary-register-as-spam-region)
+ (define-key
+ wl-summary-mode-map "rkn" 'wl-summary-register-as-good-region)
+ (define-key
+ wl-summary-mode-map "tkm" 'wl-thread-spam)
+ (define-key
+ wl-summary-mode-map "tkc" 'wl-thread-test-spam)
+ (define-key
+ wl-summary-mode-map "tks" 'wl-thread-register-as-spam)
+ (define-key
+ wl-summary-mode-map "tkn" 'wl-thread-register-as-good)
+ (define-key
wl-summary-mode-map "mk" 'wl-summary-target-mark-spam)
(define-key
wl-summary-mode-map "ms" 'wl-summary-target-mark-register-as-spam)