X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=wl%2Fwl-action.el;h=223abe5c3fa30863f96eb08ce6a2ff064730b179;hb=3292cda093d45703dd7adcbf612000796397855d;hp=1207002029170a8660d6b2bc21c9e1b57db12edc;hpb=632c04d662f68a7e882b7393b1a96baf1fab1dc2;p=elisp%2Fwanderlust.git diff --git a/wl/wl-action.el b/wl/wl-action.el index 1207002..223abe5 100644 --- a/wl/wl-action.el +++ b/wl/wl-action.el @@ -53,7 +53,6 @@ ;; Set mark (defun wl-summary-set-mark (&optional set-mark number interactive data) - (interactive) "Set temporary mark SET-MARK on the message with NUMBER. NUMBER is the message number to set the mark on. INTERACTIVE is set as t if it have to run interactively. @@ -101,11 +100,14 @@ Return number if put mark succeed" (wl-highlight-summary-current-line)) (when data (wl-summary-print-argument number data))) + (when (and (eq wl-summary-buffer-view 'thread) + interactive) + (wl-thread-open-children number)) (set-buffer-modified-p nil) ;; Return value. number)) ;; Move the cursor. - (if (or interactive (interactive-p)) + (if interactive (if (eq wl-summary-move-direction-downward nil) (wl-summary-prev) (wl-summary-next)))))) @@ -276,35 +278,30 @@ Return number if put mark succeed" (let ((start (point)) (refiles (mapcar 'car mark-list)) (refile-failures 0) - refile-len dst-msgs ; loop counter result) ;; begin refile... - (setq refile-len (length refiles)) (goto-char start) ; avoid moving cursor to ; the bottom line. - (message message) - (when (> refile-len elmo-display-progress-threshold) - (elmo-progress-set 'elmo-folder-move-messages - refile-len message)) - (setq result nil) - (condition-case nil - (setq result (elmo-folder-move-messages - wl-summary-buffer-elmo-folder - refiles - (if (eq folder-name 'null) - 'null - (wl-folder-get-elmo-folder folder-name)))) - (error nil)) - (when result ; succeeded. - ;; update buffer. - (wl-summary-delete-messages-on-buffer refiles) - ;; update wl-summary-buffer-temp-mark-list. - (dolist (mark-info mark-list) - (setq wl-summary-buffer-temp-mark-list - (delq mark-info wl-summary-buffer-temp-mark-list)))) - (elmo-progress-clear 'elmo-folder-move-messages) - (message (concat message "done")) + (elmo-with-progress-display + (elmo-folder-move-messages (length refiles)) + message + (setq result nil) + (condition-case nil + (setq result (elmo-folder-move-messages + wl-summary-buffer-elmo-folder + refiles + (if (eq folder-name 'null) + 'null + (wl-folder-get-elmo-folder folder-name)))) + (error nil)) + (when result ; succeeded. + ;; update buffer. + (wl-summary-delete-messages-on-buffer refiles) + ;; update wl-summary-buffer-temp-mark-list. + (dolist (mark-info mark-list) + (setq wl-summary-buffer-temp-mark-list + (delq mark-info wl-summary-buffer-temp-mark-list))))) (wl-summary-set-message-modified) ;; Return the operation failed message numbers. (if result @@ -425,13 +422,13 @@ Return number if put mark succeed" (wl-summary-move-mark-list-messages mark-list (wl-summary-get-dispose-folder (wl-summary-buffer-folder-name)) - "Disposing messages...")) + "Disposing messages")) ;; Delete action. (defun wl-summary-exec-action-delete (mark-list) (wl-summary-move-mark-list-messages mark-list 'null - "Deleting messages...")) + "Deleting messages")) ;; Refile action (defun wl-summary-set-action-refile (number mark data) @@ -448,32 +445,28 @@ Return number if put mark succeed" (save-excursion (let ((start (point)) (failures 0) - (refile-len (length mark-list)) dst-msgs) ;; begin refile... (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...")) - (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 pair)) - (setq wl-summary-buffer-temp-mark-list - (wl-delete-associations - (cdr pair) - wl-summary-buffer-temp-mark-list))) - (setq failures (+ failures (length (cdr pair)))))) - (elmo-progress-clear 'elmo-folder-move-messages) - (if (<= failures 0) - (message "Refiling messages...done")) + (elmo-with-progress-display + (elmo-folder-move-messages (length mark-list)) + "Refiling messages" + (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 pair)) + (setq wl-summary-buffer-temp-mark-list + (wl-delete-associations + (cdr pair) + wl-summary-buffer-temp-mark-list))) + (setq failures (+ failures (length (cdr pair))))))) failures))) ;; Copy action @@ -484,34 +477,30 @@ Return number if put mark succeed" (save-excursion (let ((start (point)) (failures 0) - (refile-len (length mark-list)) dst-msgs) ;; begin refile... (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 "Copying messages...")) - (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 pair)) - (setq wl-summary-buffer-temp-mark-list - (wl-delete-associations - (cdr pair) - wl-summary-buffer-temp-mark-list))) - (setq failures (+ failures (length (cdr pair)))))) - (elmo-progress-clear 'elmo-folder-move-messages) - (if (<= failures 0) - (message "Copying messages...done")) + (elmo-with-progress-display + (elmo-folder-move-messages (length mark-list)) + "Copying messages" + (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 pair)) + (setq wl-summary-buffer-temp-mark-list + (wl-delete-associations + (cdr pair) + wl-summary-buffer-temp-mark-list))) + (setq failures (+ failures (length (cdr pair))))))) failures))) ;; Prefetch. @@ -555,9 +544,8 @@ Return number if put mark succeed" "Resend the message with NUMBER to ADDRESS." (message "Resending message to %s..." address) (let ((folder wl-summary-buffer-elmo-folder)) - (save-excursion + (with-current-buffer (get-buffer-create " *wl-draft-resend*") ;; We first set up a normal mail buffer. - (set-buffer (get-buffer-create " *wl-draft-resend*")) (set-buffer-multibyte nil) (erase-buffer) (setq wl-sent-message-via nil) @@ -615,8 +603,8 @@ Return number if put mark succeed" (buffer-read-only nil) (buf (current-buffer)) sol eol rs re) + (setq sol (point-at-bol)) (beginning-of-line) - (setq sol (point)) (search-forward "\r") (forward-char -1) (setq eol (point)) @@ -722,16 +710,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) @@ -744,7 +732,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)) @@ -752,18 +741,18 @@ 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 (string-to-char " ")) + 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) @@ -836,7 +825,7 @@ Return number if put mark succeed" checked-dsts (count 0) number dst thr-entity) - (goto-line 1) + (goto-char (point-min)) (while (not (eobp)) (setq number (wl-summary-message-number)) (dolist (number (cons number