Synch up with main trunk, and prepare the release 2.12.0.
[elisp/wanderlust.git] / wl / wl-action.el
index fe0a28d..0d213cd 100644 (file)
@@ -124,6 +124,7 @@ Return number if put mark succeed"
 
 (defun wl-summary-target-mark-set-action (action)
   (unless (eq (wl-summary-action-symbol action) 'target-mark)
+    (unless wl-summary-buffer-target-mark-list (error "no target"))
     (save-excursion
       (goto-char (point-min))
       (let ((numlist wl-summary-buffer-number-list)
@@ -434,19 +435,10 @@ Return number if put mark succeed"
 
 ;; Refile action
 (defun wl-summary-set-action-refile (number mark data)
-  (let ((policy (wl-get-assoc-list-value wl-refile-policy-alist
-                                        (wl-summary-buffer-folder-name)))
-       (elem wl-summary-mark-action-list))
-    (if (eq policy 'copy)
-       (while elem
-         (when (eq (wl-summary-action-symbol (car elem)) 'copy)
-           (wl-summary-register-temp-mark number
-                                          (wl-summary-action-mark (car elem))
-                                          data)
-           (setq elem nil))
-         (setq elem (cdr elem)))
-      (wl-summary-register-temp-mark number mark data)
-      (setq wl-summary-buffer-prev-refile-destination data))))
+  (when (null data)
+    (error "Destination folder is empty"))
+  (wl-summary-register-temp-mark number mark data)
+  (setq wl-summary-buffer-prev-refile-destination data))
 
 (defun wl-summary-get-refile-destination (action number)
   "Decide refile destination."
@@ -486,6 +478,8 @@ Return number if put mark succeed"
                (+ failures (length (cdr (car dst-msgs))))))
        (setq dst-msgs (cdr dst-msgs)))
       (elmo-progress-clear 'elmo-folder-move-messages)
+      (if (<= failures 0)
+         (message "Refiling messages...done"))
       failures)))
 
 ;; Copy action
@@ -520,13 +514,15 @@ Return number if put mark succeed"
              ;; update buffer.
              (wl-summary-delete-copy-marks-on-buffer (cdr (car dst-msgs)))
              (setq wl-summary-buffer-temp-mark-list
-                   (wl-delete-associations 
+                   (wl-delete-associations
                     (cdr (car dst-msgs))
                     wl-summary-buffer-temp-mark-list)))
          (setq failures
                (+ failures (length (cdr (car dst-msgs))))))
        (setq dst-msgs (cdr dst-msgs)))
       (elmo-progress-clear 'elmo-folder-move-messages)
+      (if (<= failures 0)
+         (message "Copying messages...done"))
       failures)))
 
 ;; Prefetch.
@@ -551,7 +547,7 @@ Return number if put mark succeed"
 ;; Resend.
 (defun wl-summary-get-resend-address (action number)
   "Decide resend address."
-  (completing-read "Resend message to: " 'wl-complete-address))
+  (wl-address-read-from-minibuffer "Resend message to: "))
 
 (defun wl-summary-exec-action-resend (mark-list)
   (let ((failure 0))
@@ -612,6 +608,7 @@ Return number if put mark succeed"
        (goto-char beg)
        (when (looking-at "From ")
          (replace-match "X-From-Line: ")))
+      (run-hooks 'wl-summary-resend-hook)
       ;; Send it.
       (wl-draft-dispatch-message)
       (kill-buffer (current-buffer)))
@@ -667,16 +664,16 @@ Return number if put mark succeed"
   (let ((failures 0)
        collected pair action modified)
     (dolist (action wl-summary-mark-action-list)
-      (setq collected (cons (cons 
+      (setq collected (cons (cons
                             (wl-summary-action-mark action)
                             nil) collected)))
     (dolist (mark-info wl-summary-buffer-temp-mark-list)
-      (if numbers
-         (when (memq (nth 0 mark-info) numbers)
-           (setq pair (assoc (nth 1 mark-info) collected)))
-       (setq pair (assoc (nth 1 mark-info) collected)))
-      (setq pair (assoc (nth 1 mark-info) collected))
-      (setcdr pair (cons mark-info (cdr pair))))
+      (setq pair
+           (when (or (null numbers)
+                     (memq (nth 0 mark-info) numbers))
+             (assoc (nth 1 mark-info) collected)))
+      (if pair
+         (setcdr pair (cons mark-info (cdr pair)))))
     ;; collected is a pair of
     ;; mark-string and a list of mark-info
     (dolist (pair collected)
@@ -698,7 +695,7 @@ Return number if put mark succeed"
       (setq wl-message-buffer nil))
     (set-buffer-modified-p nil)
     (when (> failures 0)
-      (format "%d execution(s) were failed" failures))))
+      (message "%d execution(s) were failed" failures))))
 
 (defun wl-summary-exec-region (beg end)
   (interactive "r")
@@ -782,8 +779,9 @@ Return number if put mark succeed"
 (defun wl-summary-refile-prev-destination ()
   "Refile message to previously refiled destination."
   (interactive)
-  (wl-summary-refile (wl-summary-message-number)
-                    wl-summary-buffer-prev-refile-destination)
+  (funcall (symbol-function 'wl-summary-refile)
+          (wl-summary-message-number)
+          wl-summary-buffer-prev-refile-destination)
   (if (and (interactive-p)
           (eq wl-summary-move-direction-downward nil))
       (wl-summary-prev)
@@ -938,10 +936,7 @@ If optional argument NUMBER is specified, unmark message specified by NUMBER."
 
 (defun wl-summary-target-mark-all ()
   (interactive)
-  (wl-summary-target-mark-region (point-min) (point-max))
-  (setq wl-summary-buffer-target-mark-list
-       (elmo-folder-list-messages wl-summary-buffer-elmo-folder
-                                  nil 'in-msgdb)))
+  (wl-summary-target-mark-region (point-min) (point-max)))
 
 (defun wl-summary-delete-all-mark (mark)
   (goto-char (point-min))