(defvar wl-message-buffer-prefetch-get-next-function
'wl-summary-default-get-next-msg)
-(defvar wl-message-buffer-prefetch-debug t)
+(defvar wl-message-buffer-prefetch-debug nil)
(defvar wl-message-buffer-prefetch-timer nil)
(defvar wl-message-buffer nil) ; message buffer.
(defvar wl-message-buffer-cur-summary-buffer nil)
(defvar wl-message-buffer-original-buffer nil) ; original buffer.
(defvar wl-message-buffer-all-header-flag nil)
+(defvar wl-message-buffer-mode-line-formatter nil)
(make-variable-buffer-local 'wl-message-buffer-cur-folder)
(make-variable-buffer-local 'wl-message-buffer-cur-number)
(make-variable-buffer-local 'wl-message-buffer-cur-summary-buffer)
(make-variable-buffer-local 'wl-message-buffer-original-buffer)
(make-variable-buffer-local 'wl-message-buffer-all-header-flag)
+(make-variable-buffer-local 'wl-message-buffer-mode-line-formatter)
(defvar wl-fixed-window-configuration nil)
; (setcdr pointer (list entry))
; (setq wl-message-buffer-cache (cdr top))))
-(defconst wl-message-buffer-cache-name " *WL:Message*")
(defconst wl-original-message-buffer-name " *Original*")
(defun wl-original-message-mode ()
(defun wl-message-buffer-create ()
"Create a new message buffer."
- (let* ((buffer (generate-new-buffer wl-message-buffer-cache-name))
+ (let* ((buffer (generate-new-buffer wl-message-buffer-name))
(name (buffer-name buffer)))
(with-current-buffer buffer
(setq wl-message-buffer-original-buffer
- (wl-original-message-buffer-get name)))
+ (wl-original-message-buffer-get name))
+ (run-hooks 'wl-message-buffer-created-hook))
buffer))
(defun wl-message-buffer-cache-add (key)
wl-message-buffer
(get-buffer-window wl-message-buffer))
(delete-window (get-buffer-window wl-message-buffer)))
- (wl-kill-buffers (regexp-quote wl-message-buffer-cache-name))
+ (wl-kill-buffers (regexp-quote wl-message-buffer-name))
(setq wl-message-buffer-cache nil))
;;; Message buffer handling from summary buffer.
(recenter))
(if (not (bobp))
(condition-case nil
- (scroll-down lines)
+ (scroll-down (or lines wl-message-scroll-amount))
(error))
(setq top t)))
(if real-top
(static-if (boundp 'window-pixel-scroll-increment)
;; XEmacs 21.2.20 and later.
(let (window-pixel-scroll-increment)
- (scroll-up lines))
- (scroll-up lines))
+ (scroll-up (or lines wl-message-scroll-amount)))
+ (scroll-up (or lines wl-message-scroll-amount)))
(end-of-buffer
(goto-char (point-max))))
(setq bottom nil))
(defun wl-message-get-original-buffer ()
"Get original buffer for current message buffer."
- wl-message-buffer-original-buffer)
+ (if (buffer-live-p wl-message-buffer-original-buffer)
+ wl-message-buffer-original-buffer
+ (wl-original-message-buffer-get (buffer-name (current-buffer)))))
(defun wl-message-add-buttons-to-body (start end)
(save-excursion
(point-max)))
(goto-char start)
(while (re-search-forward (nth 1 entry) end t)
- (goto-char (match-end 0))
(wl-message-add-button
(match-beginning (nth 2 entry))
(match-end (nth 2 entry))
(setq wl-message-buffer-cur-summary-buffer summary-buf)
(setq wl-message-buffer-cur-folder (elmo-folder-name-internal folder))
(setq wl-message-buffer-cur-number number)
+ (wl-line-formatter-setup
+ wl-message-buffer-mode-line-formatter
+ wl-message-mode-line-format
+ wl-message-mode-line-format-spec-alist)
(setq mode-line-buffer-identification
- (format "Wanderlust: << %s / %s >>"
- (if (memq 'modeline wl-use-folder-petname)
- (wl-folder-get-petname (elmo-folder-name-internal
- folder))
- (elmo-folder-name-internal folder)) number))
+ (funcall wl-message-buffer-mode-line-formatter))
;; highlight body
; (when wl-highlight-body-too
; (wl-highlight-body))
- (condition-case ()
- (wl-message-narrow-to-page)
- (error nil)); ignore errors.
+ (ignore-errors (wl-message-narrow-to-page))
(setq cache-used (cdr cache-used))
(goto-char (point-min))
(when (re-search-forward "^$" nil t)
(wl-message-add-buttons-to-header (point-min) (point))
(wl-message-add-buttons-to-body (point) (point-max)))
(goto-char (point-min))
- (unwind-protect
- (save-excursion
- (run-hooks 'wl-message-redisplay-hook))
- ;; go back to summary mode
- (set-buffer-modified-p nil)
- (setq buffer-read-only t)
- (set-buffer summary-buf)
- (setq summary-win (get-buffer-window summary-buf))
- (if (window-live-p summary-win)
- (select-window summary-win)))
+ (ignore-errors (run-hooks 'wl-message-redisplay-hook))
+ ;; go back to summary mode
+ (set-buffer-modified-p nil)
+ (setq buffer-read-only t)
+ (set-buffer summary-buf)
+ (setq summary-win (get-buffer-window summary-buf))
+ (if (window-live-p summary-win)
+ (select-window summary-win))
cache-used))
;; Use message buffer cache.
;; buffer cache is used.
(setq cache-used t)
(with-current-buffer hit
+ ;; Rewind to the top page
+ (widen)
+ (goto-char (point-min))
+ (ignore-errors (wl-message-narrow-to-page))
(unless (eq wl-message-buffer-cur-flag flag)
(setq read t))))
;; delete tail and add new to the top.
(defun wl-message-display-internal (folder number flag
&optional force-reload unread)
- (let ((default-mime-charset wl-mime-charset))
+ (let ((default-mime-charset wl-mime-charset)
+ (elmo-mime-charset wl-mime-charset))
(setq wl-message-buffer-all-header-flag (eq flag 'all-header))
(prog1
(if (eq flag 'as-is)
(defun wl-message-buffer-prefetch-get-next (folder number summary)
(if (buffer-live-p summary)
(with-current-buffer summary
- (let* ((wl-summary-move-spec-plugged-alist
- (or wl-message-buffer-prefetch-move-spec-plugged-alist
- wl-summary-move-spec-plugged-alist))
- (wl-summary-move-spec-unplugged-alist
- (or wl-message-buffer-prefetch-move-spec-unplugged-alist
- wl-summary-move-spec-unplugged-alist))
- (next (funcall wl-message-buffer-prefetch-get-next-function
- number)))
- (if (and next
- (not (wl-message-buffer-prefetch-p folder next)))
- ;; for Multi folder
- (wl-message-buffer-prefetch-get-next
- folder next summary)
- next)))))
+ (let ((wl-summary-move-spec-plugged-alist
+ (or wl-message-buffer-prefetch-move-spec-plugged-alist
+ wl-summary-move-spec-plugged-alist))
+ (wl-summary-move-spec-unplugged-alist
+ (or wl-message-buffer-prefetch-move-spec-unplugged-alist
+ wl-summary-move-spec-unplugged-alist))
+ (next number))
+ (while (and (setq next (funcall
+ wl-message-buffer-prefetch-get-next-function
+ next))
+ (not (wl-message-buffer-prefetch-p folder next))))
+ next))))
(defun wl-message-buffer-prefetch (folder number count
&optional summary charset)
(defun wl-message-buffer-prefetch-next (folder number count
&optional summary charset)
(let* ((summary (or summary (get-buffer wl-summary-buffer-name)))
- (next (wl-message-buffer-prefetch-get-next folder number summary)))
+ next)
(when (and count
(wl-message-buffer-prefetch-p folder))
- (wl-message-buffer-prefetch-clear-timer)
- (wl-message-buffer-prefetch-set-timer
- folder next count summary charset))))
+ (setq next (wl-message-buffer-prefetch-get-next folder number summary))
+ (when next
+ (wl-message-buffer-prefetch-clear-timer)
+ (wl-message-buffer-prefetch-set-timer
+ folder next count summary charset)))))
(defun wl-message-buffer-prefetch-subr (folder number count summary charset)
(if (buffer-live-p summary)