* elmo-vars.el (elmo-network-stream-type-alist): Add direct.
[elisp/wanderlust.git] / elmo / elmo-split.el
index bb68ed9..57bf966 100644 (file)
@@ -38,6 +38,7 @@
 ;;
 
 ;;; Code:
+(eval-when-compile (require 'cl))
 (require 'elmo)
 
 (eval-when-compile
@@ -290,7 +291,8 @@ If prefix argument ARG is specified, do a reharsal (no harm)."
        (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)
@@ -298,7 +300,7 @@ If prefix argument ARG is specified, do a reharsal (no harm)."
        (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))
@@ -314,6 +316,9 @@ If prefix argument ARG is specified, do a reharsal (no harm)."
                                          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)
@@ -345,7 +350,10 @@ If prefix argument ARG is specified, do a reharsal (no harm)."
                                         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)))