"----"
("Writing Messages"
["Write a message" wl-summary-write t]
+ ["Write for current folder" wl-summary-write-current-folder t]
["Reply" wl-summary-reply t]
["Reply with citation" wl-summary-reply-with-citation t]
["Forward" wl-summary-forward t])
(define-key wl-summary-mode-map "-" 'wl-summary-prev-line-content)
(define-key wl-summary-mode-map "\e\r" 'wl-summary-prev-line-content)
(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 "e" 'wl-summary-save)
(define-key wl-summary-mode-map "\C-c\C-o" 'wl-jump-to-draft-buffer)
(define-key wl-summary-mode-map "\C-c\C-a" 'wl-addrmgr)
+ (define-key wl-summary-mode-map "\C-c\C-p" 'wl-summary-next-buffer)
+ (define-key wl-summary-mode-map "\C-c\C-n" 'wl-summary-previous-buffer)
(define-key wl-summary-mode-map "H" 'wl-summary-redisplay-all-header)
(define-key wl-summary-mode-map "M" 'wl-summary-redisplay-no-mime)
(define-key wl-summary-mode-map "B" 'wl-summary-burst)
(define-key wl-summary-mode-map "\M-t" 'wl-toggle-plugged)
(define-key wl-summary-mode-map "\C-t" 'wl-plugged-change)
;;
+ (define-key wl-summary-mode-map "\C-x\C-s" 'wl-summary-save-status)
(wl-summary-setup-mouse)
(easy-menu-define
wl-summary-mode-menu
(wl-summary-thread-modified-p)))
(wl-summary-save-view-cache))))
+(defun wl-summary-save-status ()
+ "Save summary view and msgdb."
+ (interactive)
+ (if (interactive-p) (message "Saving summary status..."))
+ (wl-summary-save-view)
+ (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.")))
+
(defun wl-summary-force-exit ()
"Exit current summary. Buffer is deleted even the buffer is sticky."
(interactive)
(run-hooks 'wl-summary-exit-pre-hook)
(if wl-summary-buffer-exit-function
(funcall wl-summary-buffer-exit-function)
- (wl-summary-cleanup-temp-marks sticky)
+ (if (or force-exit (not sticky))
+ (wl-summary-cleanup-temp-marks sticky))
(unwind-protect
;; save summary status
(progn
(defun wl-summary-goto-folder (&optional arg)
(interactive "P")
- (wl-summary-goto-folder-subr nil nil nil arg t))
+ (wl-summary-goto-folder-subr nil nil nil nil t nil arg))
+
+(defun wl-summary-goto-folder-sticky ()
+ (interactive)
+ (wl-summary-goto-folder-subr nil nil nil t t))
(defun wl-summary-goto-last-visited-folder ()
(interactive)
folder)))))
(defun wl-summary-goto-folder-subr (&optional name scan-type other-window
- sticky interactive scoring)
+ sticky interactive scoring
+ force-exit)
"Display target folder on summary."
(interactive)
(let* ((keep-cursor (memq this-command
(eq major-mode 'wl-summary-mode)) ; called in summary.
(setq wl-summary-last-visited-folder (wl-summary-buffer-folder-name))
(run-hooks 'wl-summary-exit-pre-hook)
- (wl-summary-cleanup-temp-marks (wl-summary-sticky-p))
+ (if (or force-exit (not (wl-summary-sticky-p)))
+ (wl-summary-cleanup-temp-marks (wl-summary-sticky-p)))
(wl-summary-save-view)
- (elmo-folder-commit wl-summary-buffer-elmo-folder))
+ (elmo-folder-commit wl-summary-buffer-elmo-folder)
+ (if (and (wl-summary-sticky-p) force-exit)
+ (kill-buffer (current-buffer))))
(setq buf (wl-summary-get-buffer-create (elmo-folder-name-internal folder)
sticky))
(setq reuse-buf
(wl-summary-buffer-folder-name))
'update nil nil t)))
-(defun wl-summary-delete-all-temp-marks ()
+(defun wl-summary-delete-all-temp-marks (&optional no-msg)
+ "Erase all temp marks from buffer."
(interactive)
- (save-excursion
- (goto-char (point-min))
- (message "Unmarking...")
- (while (not (eobp))
- (wl-summary-unmark)
- (forward-line))
- (message "Unmarking...done")
- (setq wl-summary-buffer-target-mark-list nil)
- (setq wl-summary-buffer-delete-list nil)
- (setq wl-summary-buffer-refile-list nil)
- (setq wl-summary-buffer-copy-list nil)))
+ (when (or wl-summary-buffer-target-mark-list
+ wl-summary-buffer-delete-list
+ wl-summary-buffer-refile-list
+ wl-summary-buffer-copy-list)
+ (save-excursion
+ (goto-char (point-min))
+ (unless no-msg
+ (message "Unmarking..."))
+ (while (not (eobp))
+ (wl-summary-unmark)
+ (forward-line))
+ (unless no-msg
+ (message "Unmarking...done"))
+ (setq wl-summary-buffer-target-mark-list nil)
+ (setq wl-summary-buffer-delete-list nil)
+ (setq wl-summary-buffer-refile-list nil)
+ (setq wl-summary-buffer-copy-list nil))))
(defun wl-summary-delete-mark (number)
"Delete temporary mark of the message specified by NUMBER."
(delq (car mlist) wl-summary-buffer-target-mark-list))
(setq mlist (cdr mlist)))))))
+(defun wl-summary-next-buffer ()
+ "Switch to next summary buffer."
+ (interactive)
+ (let ((buffers (sort (wl-collect-summary)
+ (lambda (buffer1 buffer2)
+ (string-lessp (buffer-name buffer1)
+ (buffer-name buffer2))))))
+ (switch-to-buffer
+ (or (cadr (memq (current-buffer) buffers))
+ (car buffers)))))
+
+(defun wl-summary-previous-buffer ()
+ "Switch to previous summary buffer."
+ (interactive)
+ (let ((buffers (sort (wl-collect-summary)
+ (lambda (buffer1 buffer2)
+ (not (string-lessp (buffer-name buffer1)
+ (buffer-name buffer2)))))))
+ (switch-to-buffer
+ (or (cadr (memq (current-buffer) buffers))
+ (car buffers)))))
+
(defun wl-summary-target-mark-copy ()
(interactive)
(wl-summary-target-mark-refile-subr "copy"))
(elmo-msgdb-mark-set mark-alist
number
wl-summary-important-mark))
- (if (elmo-file-cache-exists-p message-id)
+ (if (eq (elmo-file-cache-exists-p message-id) 'entire)
(elmo-folder-mark-as-read folder (list number))
;; Force cache message.
(elmo-message-encache folder number 'read))
(cache (expand-file-name wl-summary-cache-file dir))
(view (expand-file-name wl-summary-view-file dir))
(save-view wl-summary-buffer-view)
+ (mark-list (copy-sequence wl-summary-buffer-target-mark-list))
+ (refile-list (copy-sequence wl-summary-buffer-refile-list))
+ (copy-list (copy-sequence wl-summary-buffer-copy-list))
+ (delete-list (copy-sequence wl-summary-buffer-delete-list))
(tmp-buffer (get-buffer-create " *wl-summary-save-view-cache*"))
(charset wl-summary-buffer-mime-charset))
(if (file-directory-p dir)
(copy-to-buffer tmp-buffer (point-min) (point-max))
(with-current-buffer tmp-buffer
(widen)
+ (setq wl-summary-buffer-target-mark-list mark-list
+ wl-summary-buffer-refile-list refile-list
+ wl-summary-buffer-copy-list copy-list
+ wl-summary-buffer-delete-list delete-list)
+ (wl-summary-delete-all-temp-marks 'no-msg)
(encode-mime-charset-region
(point-min) (point-max) charset)
(write-region-as-binary (point-min)(point-max)
(defun wl-summary-next-page ()
(interactive)
- (wl-message-next-page))
+ (let ((cur-buf (current-buffer)))
+ (wl-summary-toggle-disp-msg 'on)
+ (when (wl-summary-set-message-buffer-or-redisplay 'ignore-original)
+ (set-buffer cur-buf)
+ (wl-message-next-page))))
(defun wl-summary-prev-page ()
(interactive)
- (wl-message-prev-page))
+ (let ((cur-buf (current-buffer)))
+ (wl-summary-toggle-disp-msg 'on)
+ (when (wl-summary-set-message-buffer-or-redisplay 'ignore-original)
+ (set-buffer cur-buf)
+ (wl-message-prev-page))))
(defsubst wl-summary-no-mime-p (folder)
(wl-string-match-member (elmo-folder-name-internal folder)
"Write a new draft from Summary."
(interactive)
(wl-draft nil nil nil nil nil
- nil nil nil nil nil nil (current-buffer)
+ nil nil nil nil nil nil
nil (wl-summary-buffer-folder-name))
(run-hooks 'wl-mail-setup-hook)
(mail-position-on-field "To"))
(setq func-list (cdr func-list))
(setq guess-func (car func-list))
(setq func-list nil)))
- (when (null guess-func)
- (error "Can't guess by folder %s" folder))
- (unless (or (stringp (nth 0 guess-list))
- (stringp (nth 1 guess-list))
- (stringp (nth 2 guess-list)))
- (error "Invalid value return guess function `%s'"
- (symbol-name guess-func)))
- (wl-draft (nth 0 guess-list) nil nil ; To:
- (nth 1 guess-list) nil ; Cc:
- (nth 2 guess-list) ; Newsgroups:
- nil nil nil nil nil nil nil
- folder)
- (run-hooks 'wl-mail-setup-hook)
- (mail-position-on-field "Subject")))
+ (if (null guess-func)
+ (wl-draft)
+ (unless (or (stringp (nth 0 guess-list))
+ (stringp (nth 1 guess-list))
+ (stringp (nth 2 guess-list)))
+ (error "Invalid value return guess function `%s'"
+ (symbol-name guess-func)))
+ (wl-draft (nth 0 guess-list) nil nil ; To:
+ (nth 1 guess-list) nil ; Cc:
+ (nth 2 guess-list) ; Newsgroups:
+ nil nil nil nil nil nil
+ folder)
+ (run-hooks 'wl-mail-setup-hook)
+ (mail-position-on-field "Subject"))))
(defun wl-summary-forward (&optional without-setup-hook)
""