;;
;;; Code:
+(eval-when-compile (require 'cl))
(require 'elmo)
(eval-when-compile
`or' ... True if one of the argument returns true.
`and' ... True if all of the arguments return true.
-4. Functions which accept not argument.
-
`spam-p' ... True if contents of the message is guessed as spam.
+ Rest arguments are property list which consists
+ following.
+
+ `:register' ... If this value is non-nil,
+ Register according to
+ the classification.
5. A symbol.
(format "%d messages are splitted" count)))
(if (eq fcount 0)
"."
- (format " (%d failure)." fcount))))))
+ (format " (%d failure)." fcount))))
+ count))
(defun elmo-split-subr (folder &optional reharsal)
(let ((elmo-inhibit-display-retrieval-progress t)
(fcount 0)
(default-rule `((t ,elmo-split-default-action)))
msgs action target-folder failure delete-substance
- record-log log-string)
+ record-log log-string flags)
(message "Splitting...")
(elmo-folder-open-internal folder)
(setq msgs (elmo-folder-list-messages folder))
nil (current-buffer) 'unread))
(run-hooks 'elmo-split-fetch-hook)
(setq elmo-split-message-entity (mime-parse-buffer))
+ (setq flags (or (elmo-message-flags folder msg)
+ (and (elmo-message-entity folder msg)
+ '(read))))
(catch 'terminate
(dolist (rule (append elmo-split-rule default-rule))
(setq elmo-split-match-string-internal nil)
action)))
(elmo-folder-create target-folder)))
(elmo-folder-open-internal target-folder)
- (elmo-folder-append-buffer target-folder)
+ (setq failure (not
+ (elmo-folder-append-buffer
+ target-folder
+ flags)))
(elmo-folder-close-internal target-folder))
(error (setq failure t)
(incf fcount)))