* wl-folder.el (wl-folder-complete-filter-condition): Remove !
[elisp/wanderlust.git] / wl / wl-action.el
index 4e0e21a..ada04ce 100644 (file)
@@ -449,35 +449,31 @@ Return number if put mark succeed"
     (let ((start (point))
          (failures 0)
          (refile-len (length mark-list))
-         dst-msgs ; loop counter
-         result)
+         dst-msgs)
       ;; begin refile...
-      (setq dst-msgs
-           (wl-summary-make-destination-numbers-list mark-list))
+      (setq dst-msgs (wl-summary-make-destination-numbers-list mark-list))
       (goto-char start)        ; avoid moving cursor to the bottom line.
       (when (> refile-len elmo-display-progress-threshold)
        (elmo-progress-set 'elmo-folder-move-messages
                           refile-len "Refiling messages..."))
-      (while dst-msgs
-       (setq result nil)
-       (condition-case nil
-           (setq result (elmo-folder-move-messages
-                         wl-summary-buffer-elmo-folder
-                         (cdr (car dst-msgs))
-                         (wl-folder-get-elmo-folder (car (car dst-msgs)))))
-         (error nil))
-       (if result              ; succeeded.
+      (dolist (pair dst-msgs)
+       (if (condition-case nil
+               (elmo-folder-move-messages
+                wl-summary-buffer-elmo-folder
+                (cdr pair)
+                (wl-folder-get-elmo-folder (car pair)))
+             (error nil))
            (progn
              ;; update buffer.
-             (wl-summary-delete-messages-on-buffer (cdr (car dst-msgs)))
+             (wl-summary-delete-messages-on-buffer (cdr pair))
              (setq wl-summary-buffer-temp-mark-list
                    (wl-delete-associations
-                    (cdr (car dst-msgs))
+                    (cdr pair)
                     wl-summary-buffer-temp-mark-list)))
-         (setq failures
-               (+ failures (length (cdr (car dst-msgs))))))
-       (setq dst-msgs (cdr dst-msgs)))
+         (setq failures (+ failures (length (cdr pair))))))
       (elmo-progress-clear 'elmo-folder-move-messages)
+      (if (<= failures 0)
+         (message "Refiling messages...done"))
       failures)))
 
 ;; Copy action
@@ -489,8 +485,7 @@ Return number if put mark succeed"
     (let ((start (point))
          (failures 0)
          (refile-len (length mark-list))
-         dst-msgs ; loop counter
-         result)
+         dst-msgs)
       ;; begin refile...
       (setq dst-msgs
            (wl-summary-make-destination-numbers-list mark-list))
@@ -498,27 +493,25 @@ Return number if put mark succeed"
       (when (> refile-len elmo-display-progress-threshold)
        (elmo-progress-set 'elmo-folder-move-messages
                           refile-len "Copying messages..."))
-      (while dst-msgs
-       (setq result nil)
-       (condition-case nil
-           (setq result (elmo-folder-move-messages
-                         wl-summary-buffer-elmo-folder
-                         (cdr (car dst-msgs))
-                         (wl-folder-get-elmo-folder (car (car dst-msgs)))
-                         'no-delete))
-         (error nil))
-       (if result              ; succeeded.
+      (dolist (pair dst-msgs)
+       (if (condition-case nil
+               (elmo-folder-move-messages
+                wl-summary-buffer-elmo-folder
+                (cdr pair)
+                (wl-folder-get-elmo-folder (car pair))
+                'no-delete)
+             (error nil))
            (progn
              ;; update buffer.
-             (wl-summary-delete-copy-marks-on-buffer (cdr (car dst-msgs)))
+             (wl-summary-delete-copy-marks-on-buffer (cdr pair))
              (setq wl-summary-buffer-temp-mark-list
                    (wl-delete-associations
-                    (cdr (car dst-msgs))
+                    (cdr pair)
                     wl-summary-buffer-temp-mark-list)))
-         (setq failures
-               (+ failures (length (cdr (car dst-msgs))))))
-       (setq dst-msgs (cdr dst-msgs)))
+         (setq failures (+ failures (length (cdr pair))))))
       (elmo-progress-clear 'elmo-folder-move-messages)
+      (if (<= failures 0)
+         (message "Copying messages...done"))
       failures)))
 
 ;; Prefetch.
@@ -565,7 +558,7 @@ Return number if put mark succeed"
     (save-excursion
       ;; We first set up a normal mail buffer.
       (set-buffer (get-buffer-create " *wl-draft-resend*"))
-      (buffer-disable-undo (current-buffer))
+      (set-buffer-multibyte nil)
       (erase-buffer)
       (setq wl-sent-message-via nil)
       ;; Insert our usual headers.
@@ -583,11 +576,16 @@ Return number if put mark succeed"
       (let ((beg (point)))
        ;; Insert the message to be resent.
        (insert
-        (with-temp-buffer
-          (elmo-message-fetch folder number
-                              (elmo-make-fetch-strategy 'entire)
-                              nil (current-buffer) 'unread)
-          (buffer-string)))
+        ;; elmo-message-fetch is erase current buffer before fetch message
+        (elmo-message-fetch-string folder number
+                                   (if wl-summary-resend-use-cache
+                                       (elmo-make-fetch-strategy
+                                        'entire 'maybe nil
+                                        (elmo-file-cache-get-path
+                                         (elmo-message-field
+                                          folder number 'message-id)))
+                                     (elmo-make-fetch-strategy 'entire))
+                                   'unread))
        (goto-char (point-min))
        (search-forward "\n\n")
        (forward-char -1)
@@ -673,12 +671,13 @@ Return number if put mark succeed"
     ;; collected is a pair of
     ;; mark-string and a list of mark-info
     (dolist (pair collected)
-      (setq action (assoc (car pair) wl-summary-mark-action-list))
-      (when (and (cdr pair) (wl-summary-action-exec-function action))
-       (setq modified t)
-       (setq failures (+ failures (funcall
-                                   (wl-summary-action-exec-function action)
-                                   (cdr pair))))))
+      (when (cdr pair)
+       (setq action (assoc (car pair) wl-summary-mark-action-list))
+       (when (wl-summary-action-exec-function action)
+         (setq modified t)
+         (setq failures (+ failures (funcall
+                                     (wl-summary-action-exec-function action)
+                                     (cdr pair)))))))
     (when modified
       (wl-summary-set-message-modified))
     (run-hooks 'wl-summary-exec-hook)
@@ -723,16 +722,16 @@ Return number if put mark succeed"
                                      fld))))
     fld))
 
-(defun wl-summary-print-argument (msg-num folder)
+(defun wl-summary-print-argument (msg-num data)
   "Print action argument on line."
-  (when folder
+  (when data
     (wl-summary-remove-argument)
     (save-excursion
       (let ((inhibit-read-only t)
-           (folder (copy-sequence folder))
+           (data (copy-sequence data))
            (buffer-read-only nil)
            len rs re c)
-       (setq len (string-width folder))
+       (setq len (string-width data))
        (if (< len 1) ()
          ;;(end-of-line)
          (beginning-of-line)
@@ -745,7 +744,8 @@ Return number if put mark succeed"
                              (1- (window-width)))))
                (c (current-column))
                (padding 0))
-           (if (and width (> (+ c len) width))
+           (if (and width
+                    (> (+ c len) width))
                (progn
                  (move-to-column width)
                  (setq c (current-column))
@@ -753,18 +753,17 @@ Return number if put mark succeed"
                    (forward-char -1)
                    (setq c (current-column)))
                  (when (< (+ c len) width)
-                   (setq folder (concat " " folder)))
+                   (setq data (concat " " data)))
                  (setq rs (point))
                  (put-text-property rs re 'invisible t))
              (when (and width
                         (> (setq padding (- width len c)) 0))
-               (setq folder (concat (make-string padding ?\ )
-                                    folder)))
+               (setq data (concat (make-string padding ?\ ) data)))
              (setq rs (1- re))))
          (put-text-property rs re 'wl-summary-action-argument t)
          (goto-char re)
-         (wl-highlight-action-argument-string folder)
-         (insert folder)
+         (wl-highlight-action-argument-string data)
+         (insert data)
          (set-buffer-modified-p nil))))))
 
 (defsubst wl-summary-reserve-temp-mark-p (mark)
@@ -848,8 +847,9 @@ Return number if put mark succeed"
                                               (wl-thread-get-entity number))))
                                   (wl-thread-entity-get-descendant
                                    thr-entity))))
-         (when (and (not (wl-summary-no-auto-refile-message-p
-                          number))
+         (when (and (not (wl-summary-no-auto-refile-message-p number))
+                    (not (wl-summary-reserve-temp-mark-p
+                          (nth 1 (wl-summary-registered-temp-mark number))))
                     (setq dst
                           (wl-folder-get-realname
                            (wl-refile-guess