(define-key wl-summary-mode-map "g" 'wl-summary-goto-folder)
(define-key wl-summary-mode-map "G" 'wl-summary-goto-folder-sticky)
(define-key wl-summary-mode-map "c" 'wl-summary-mark-as-read-all)
-; (define-key wl-summary-mode-map "D" 'wl-summary-drop-unsync)
(define-key wl-summary-mode-map "a" 'wl-summary-reply)
(define-key wl-summary-mode-map "A" 'wl-summary-reply-with-citation)
(define-key wl-summary-mode-map "d" 'wl-summary-delete)
(define-key wl-summary-mode-map "u" 'wl-summary-unmark)
(define-key wl-summary-mode-map "U" 'wl-summary-unmark-all)
+ (define-key wl-summary-mode-map "D" 'wl-summary-erase)
;; thread commands
(define-key wl-summary-mode-map "t" (make-sparse-keymap))
(define-key wl-summary-mode-map "m?" 'wl-summary-target-mark-pick)
(define-key wl-summary-mode-map "m#" 'wl-summary-target-mark-print)
(define-key wl-summary-mode-map "m|" 'wl-summary-target-mark-pipe)
+ (define-key wl-summary-mode-map "mD" 'wl-summary-target-mark-erase)
;; region commands
(define-key wl-summary-mode-map "r" (make-sparse-keymap))
"Re-edit current message.
If ARG is non-nil, Supersedes message"
(interactive "P")
+ (wl-summary-toggle-disp-msg 'off)
(if arg
(wl-summary-supersedes-message)
(if (string= (wl-summary-buffer-folder-name) wl-draft-folder)
- (if (wl-summary-message-number)
- (progn
- (wl-draft-reedit (wl-summary-message-number))
- (if (wl-message-news-p)
- (mail-position-on-field "Newsgroups")
- (mail-position-on-field "To"))
- (delete-other-windows)))
+ (when (wl-summary-message-number)
+ (wl-draft-reedit (wl-summary-message-number))
+ (if (wl-message-news-p)
+ (mail-position-on-field "Newsgroups")
+ (mail-position-on-field "To")))
(wl-draft-edit-string (wl-summary-message-string)))))
(defun wl-summary-resend-bounced-mail ()
contains some mail you have written but has been bounced back to
you."
(interactive)
+ (wl-summary-toggle-disp-msg 'off)
(save-excursion
(wl-summary-set-message-buffer-or-redisplay)
(set-buffer (wl-message-get-original-buffer))
(elmo-folder-commit wl-summary-buffer-elmo-folder)
(elmo-folder-check wl-summary-buffer-elmo-folder)
(if wl-use-scoring (wl-score-save))
- (if (interactive-p) (message "Saving summary status...done.")))
+ (if (interactive-p) (message "Saving summary status...done")))
(defun wl-summary-force-exit ()
"Exit current summary. Buffer is deleted even the buffer is sticky."
parent-entity
parent-number
(case-fold-search t)
+ (depth 0) relatives anumber
cur number overview2 cur-entity linked retval delayed-entity
update-list entity-stack)
(while entity
parent-number (elmo-msgdb-overview-entity-get-number
parent-entity))
(setq number (elmo-msgdb-overview-entity-get-number entity))
- ;; If thread loop detected, set parent as nil.
(setq cur entity)
+ ;; If thread loop detected, set parent as nil.
(while cur
- (if (eq number (elmo-msgdb-overview-entity-get-number
- (setq cur
- (elmo-msgdb-get-parent-entity cur msgdb))))
+ (setq anumber
+ (elmo-msgdb-overview-entity-get-number
+ (setq cur (elmo-msgdb-get-parent-entity cur msgdb))))
+ (if (memq anumber relatives)
(setq parent-number nil
- cur nil)))
+ cur nil))
+ (setq relatives (cons
+ (elmo-msgdb-overview-entity-get-number cur)
+ relatives)))
(if (and parent-number
(not (wl-thread-get-entity parent-number))
(not force-insert))
(defun wl-summary-exec-region (beg end)
(interactive "r")
- (message "Collecting marks ...")
+ (message "Collecting marks...")
(save-excursion
(goto-char beg)
(beginning-of-line)
refile-len
dst-msgs ; loop counter
result)
- (message "Executing ...")
+ (message "Executing...")
(while dels
(when (not (assq (car dels) wl-summary-buffer-refile-list))
(wl-append wl-summary-buffer-refile-list
wl-message-buffer-cur-number)))
(wl-summary-toggle-disp-msg 'off))
(set-buffer-modified-p nil)
- (message (concat "Executing ... done"
+ (message (concat "Executing...done"
(if (> refile-failures 0)
(format " (%d refiling failed)" refile-failures)
"")
"")
"."))))))
+(defun wl-summary-erase (&optional number)
+ "Erase message actually, without moving it to trash."
+ (interactive)
+ (if (elmo-folder-writable-p wl-summary-buffer-elmo-folder)
+ (let* ((buffer-num (wl-summary-message-number))
+ (msg-num (or number buffer-num)))
+ (if (null msg-num)
+ (message "No message.")
+ (let* ((msgdb (wl-summary-buffer-msgdb))
+ (entity (elmo-msgdb-overview-get-entity msg-num msgdb))
+ (subject (elmo-delete-char
+ ?\n (or (elmo-msgdb-overview-entity-get-subject
+ entity)
+ wl-summary-no-subject-message))))
+ (when (yes-or-no-p
+ (format "Erase \"%s\" without moving it to trash? "
+ (truncate-string subject 30)))
+ (wl-summary-unmark msg-num)
+ (elmo-folder-delete-messages wl-summary-buffer-elmo-folder
+ (list msg-num))
+ (wl-summary-delete-messages-on-buffer (list msg-num))
+ (save-excursion (wl-summary-sync nil "update"))))))
+ (message "Read-only folder.")))
+
+(defun wl-summary-target-mark-erase ()
+ (interactive)
+ (if (elmo-folder-writable-p wl-summary-buffer-elmo-folder)
+ (if (null wl-summary-buffer-target-mark-list)
+ (message "No marked message.")
+ (when (yes-or-no-p
+ "Erase all marked messages without moving them to trash? ")
+ (elmo-folder-delete-messages wl-summary-buffer-elmo-folder
+ wl-summary-buffer-target-mark-list)
+ (wl-summary-delete-messages-on-buffer
+ wl-summary-buffer-target-mark-list)
+ (setq wl-summary-buffer-target-mark-list nil)
+ (save-excursion (wl-summary-sync nil "update"))))
+ (message "Read-only folder.")))
+
(defun wl-summary-read-folder (default &optional purpose ignore-error
no-create init)
(let ((fld (completing-read
(setq skipped (cons (car mlist) skipped)))
(setq mlist (cdr mlist)))
(setq wl-summary-buffer-target-mark-list skipped)
- (message "Prefetching... %d/%d message(s)." count length)
+ (message "Prefetching... %d/%d message(s)" count length)
(set-buffer-modified-p nil))))
(defun wl-summary-target-mark-refile-subr (copy-or-refile)
draft-buf)
(wl-summary-jump-to-msg (car mlist))
(wl-summary-reply arg t)
- (goto-char (point-max))
- (setq start-point (point-marker))
- (setq draft-buf (current-buffer))
- (save-window-excursion
- (while mlist
- (set-buffer summary-buf)
- (delete-other-windows)
- (wl-summary-jump-to-msg (car mlist))
- (wl-summary-redisplay)
- (set-buffer draft-buf)
- (goto-char (point-max))
- (wl-draft-yank-original)
- (setq mlist (cdr mlist)))
- (goto-char start-point)
- (save-excursion
- (set-buffer summary-buf)
- (wl-summary-delete-all-temp-marks)))
- (run-hooks 'wl-mail-setup-hook)))
+ (save-excursion
+ (goto-char (point-max))
+ (setq start-point (point-marker))
+ (setq draft-buf (current-buffer))
+ (save-window-excursion
+ (while mlist
+ (set-buffer summary-buf)
+ (delete-other-windows)
+ (wl-summary-jump-to-msg (car mlist))
+ (wl-summary-redisplay)
+ (set-buffer draft-buf)
+ (goto-char (point-max))
+ (wl-draft-yank-original)
+ (setq mlist (cdr mlist)))
+ (goto-char start-point)
+ (save-excursion
+ (set-buffer summary-buf)
+ (wl-summary-delete-all-temp-marks)))
+ (run-hooks 'wl-mail-setup-hook))))
(defun wl-summary-reply-with-citation (&optional arg)
(interactive "P")
(when (wl-summary-reply arg t)
- (goto-char (point-max))
- (wl-draft-yank-original)
- (run-hooks 'wl-mail-setup-hook)))
+ (save-excursion
+ (goto-char (point-max))
+ (wl-draft-yank-original)
+ (run-hooks 'wl-mail-setup-hook))))
(defun wl-summary-jump-to-msg-by-message-id (&optional id)
(interactive)
(when (setq mes-buf (wl-message-get-original-buffer))
(wl-draft-reply mes-buf arg summary-buf)
(unless without-setup-hook
- (run-hooks 'wl-mail-setup-hook)))
+ (save-excursion
+ (run-hooks 'wl-mail-setup-hook))))
t)))
(defun wl-summary-write ()
(defun wl-summary-supersedes-message ()
"Supersede current message."
(interactive)
+ (wl-summary-toggle-disp-msg 'off)
(let ((summary-buf (current-buffer))
message-buf from)
(wl-summary-set-message-buffer-or-redisplay)