wl-summary-buffer-unread-count unread))
(+ new unread)))
+(defun wl-summary-message-string (&optional use-cache)
+ "Return full body string of current message.
+If optional USE-CACHE is non-nil, use cache if exists."
+ (let ((number (wl-summary-message-number))
+ (folder wl-summary-buffer-elmo-folder))
+ (if (null number)
+ (message "No message.")
+ (elmo-set-work-buf
+ (elmo-message-fetch folder
+ number
+ (elmo-make-fetch-strategy
+ 'entire
+ use-cache ; use cache
+ nil ; save cache (should `t'?)
+ (and
+ use-cache
+ (elmo-file-cache-get-path
+ (elmo-message-field folder number 'message-id))))
+ nil
+ (current-buffer)
+ 'unread)
+ (buffer-string)))))
+
(defun wl-summary-reedit (&optional arg)
"Re-edit current message.
If ARG is non-nil, Supersedes message"
(mail-position-on-field "Newsgroups")
(mail-position-on-field "To"))
(delete-other-windows)))
- (save-excursion
- (let ((mmelmo-force-fetch-entire-message t))
- (if (null (wl-summary-message-number))
- (message "No message.")
- (set-buffer (wl-summary-get-original-buffer))
- (wl-draft-edit-string (buffer-substring (point-min)
- (point-max)))))))))
+ (wl-draft-edit-string (wl-summary-message-string)))))
(defun wl-summary-resend-bounced-mail ()
"Re-mail the current message.
you."
(interactive)
(save-excursion
- (let ((mmelmo-force-fetch-entire-message t))
- (wl-summary-set-message-buffer-or-redisplay)
- (set-buffer (wl-message-get-original-buffer))
- (goto-char (point-min))
- (let ((case-fold-search nil))
- (cond
- ((and
- (re-search-forward
- (concat "^\\($\\|[Cc]ontent-[Tt]ype:[ \t]+multipart/\\(report\\|mixed\\)\\)") nil t)
- (not (bolp))
- (re-search-forward "boundary=\"\\([^\"]+\\)\"" nil t))
- (let ((boundary (buffer-substring (match-beginning 1) (match-end 1)))
- start)
- (cond
- ((and (setq start (re-search-forward
- (concat "^--" boundary "\n"
- "\\([Cc]ontent-[Dd]escription:.*\n\\)?"
- "[Cc]ontent-[Tt]ype:[ \t]+"
- "\\(message/rfc822\\|text/rfc822-headers\\)\n"
- "\\(.+\n\\)*\n") nil t))
- (re-search-forward
- (concat "\n\\(--" boundary "\\)--\n") nil t))
- (wl-draft-edit-string (buffer-substring start (match-beginning 1))))
- (t
- (message "Seems no message/rfc822 part.")))))
- ((let ((case-fold-search t))
- (re-search-forward wl-rejected-letter-start nil t))
- (skip-chars-forward " \t\n")
- (wl-draft-edit-string (buffer-substring (point) (point-max))))
- (t
- (message "Does not appear to be a rejected letter.")))))))
+ (wl-summary-set-message-buffer-or-redisplay)
+ (set-buffer (wl-message-get-original-buffer))
+ (goto-char (point-min))
+ (let ((case-fold-search nil))
+ (cond
+ ((and
+ (re-search-forward
+ (concat "^\\($\\|[Cc]ontent-[Tt]ype:[ \t]+multipart/\\(report\\|mixed\\)\\)") nil t)
+ (not (bolp))
+ (re-search-forward "boundary=\"\\([^\"]+\\)\"" nil t))
+ (let ((boundary (buffer-substring (match-beginning 1) (match-end 1)))
+ start)
+ (cond
+ ((and (setq start (re-search-forward
+ (concat "^--" boundary "\n"
+ "\\([Cc]ontent-[Dd]escription:.*\n\\)?"
+ "[Cc]ontent-[Tt]ype:[ \t]+"
+ "\\(message/rfc822\\|text/rfc822-headers\\)\n"
+ "\\(.+\n\\)*\n") nil t))
+ (re-search-forward
+ (concat "\n\\(--" boundary "\\)--\n") nil t))
+ (wl-draft-edit-string (buffer-substring start (match-beginning 1))))
+ (t
+ (message "Seems no message/rfc822 part.")))))
+ ((let ((case-fold-search t))
+ (re-search-forward wl-rejected-letter-start nil t))
+ (skip-chars-forward " \t\n")
+ (wl-draft-edit-string (buffer-substring (point) (point-max))))
+ (t
+ (message "Does not appear to be a rejected letter."))))))
(defun wl-summary-resend-message (address)
"Resend the current message to ADDRESS."
"[ "
(save-match-data
(wl-set-string-width
- wl-from-width
+ wl-summary-from-width
(wl-summary-from-func-internal
(eword-decode-string
(elmo-delete-char
(setq diffs (cdr diffs)))
(if (interactive-p) (message mes)))))
-(defun wl-summary-confirm-appends (appends)
- (let ((len (length appends))
- in)
- (if (> len wl-summary-update-confirm-threshold)
- (if (y-or-n-p (format "Too many messages(%d). Continue? " len))
- appends
- (setq in wl-summary-update-confirm-threshold)
- (catch 'end
- (while t
- (setq in (read-from-minibuffer "Update number: "
- (int-to-string in))
- in (string-to-int in))
- (if (< len in)
- (throw 'end len))
- (if (y-or-n-p (format "%d messages are disappeared. OK? "
- (max (- len in) 0)))
- (throw 'end in))))
- (nthcdr (max (- len in) 0) appends))
- appends)))
-
(defun wl-summary-sync-update (&optional unset-cursor sync-all no-check)
"Update the summary view to the newest folder status."
(interactive)
(elmo-mime-charset wl-summary-buffer-mime-charset)
(inhibit-read-only t)
(buffer-read-only nil)
- (elmo-folder-update-threshold wl-summary-update-confirm-threshold)
gc-message
overview number-alist mark-alist
curp num i new-msgdb
(save-excursion
(goto-char (point-min))
(let ((wl-save-dir
- (wl-read-directory-name "Save to directory: " wl-tmp-dir))
+ (wl-read-directory-name "Save to directory: "
+ wl-temporary-file-directory))
(regexp (concat "^" wl-summary-buffer-number-regexp "\\(\\*\\)"))
number mlist)
(if (null (file-exists-p wl-save-dir))
(setq linked (wl-thread-entity-get-linked thr-entity)))
(if (string= thr-str "")
(setq no-parent t)) ; no parent
- (if (and wl-summary-width
- wl-summary-indent-length-limit
+ (if (and wl-summary-indent-length-limit
(< wl-summary-indent-length-limit
(string-width thr-str)))
(setq thr-str (wl-set-string-width
(setq from
(wl-set-string-width
(if children-num
- (- wl-from-width (length children-num) 2)
- wl-from-width)
+ (- wl-summary-from-width (length children-num) 2)
+ wl-summary-from-width)
(elmo-delete-char ?\n
(wl-summary-from-func-internal
(elmo-msgdb-overview-entity-get-from entity)))))
subject parent-subject)))
(wl-summary-subject-func-internal subject) ""))
(if (and (not wl-summary-width)
- wl-subject-length-limit)
- (truncate-string subject wl-subject-length-limit)
+ wl-summary-subject-length-limit)
+ (truncate-string subject wl-summary-subject-length-limit)
subject)))))
(if wl-summary-width (setq line
(wl-set-string-width
"Write message to current FOLDER's newsgroup or mailing-list.
Use function list is `wl-summary-write-current-folder-functions'."
(interactive)
- (let (newsgroups to cc)
- ;; default FOLDER is current buffer folder
- (setq folder (or folder (wl-summary-buffer-folder-name)))
- (let ((flist wl-summary-write-current-folder-functions)
- guess-list)
- (while flist
- (setq guess-list (funcall (car flist) folder))
- (cond ((null guess-list)
- (setq flist (cdr flist)))
- ;; To: or Newsgroups:
- ((or (stringp (nth 0 guess-list))
- (stringp (nth 2 guess-list)))
- (setq flist nil))
- ;; (nil X nil) or error case
- (t
- (setq flist (cdr flist)))))
- (when (null guess-list)
- (error "Can't guess by folder %s" folder))
- (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"))))
+ ;; default FOLDER is current buffer folder
+ (setq folder (or folder (wl-summary-buffer-folder-name)))
+ (let ((func-list wl-summary-write-current-folder-functions)
+ guess-list guess-func)
+ (while func-list
+ (setq guess-list (funcall (car func-list) folder))
+ (if (null guess-list)
+ (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")))
(defun wl-summary-forward (&optional without-setup-hook)
""
(setq wl-summary-buffer-current-msg num)
(when wl-summary-recenter
(recenter (/ (- (window-height) 2) 2))
- (if (not wl-summary-width)
+ (if (not wl-summary-indent-length-limit)
(wl-horizontal-recenter)))
(wl-highlight-summary-displaying)
(wl-message-buffer-prefetch-next folder num (current-buffer)
(setq wl-summary-buffer-current-msg num)
(when wl-summary-recenter
(recenter (/ (- (window-height) 2) 2))
- (if (not wl-summary-width)
+ (if (not wl-summary-indent-length-limit)
(wl-horizontal-recenter)))
(wl-highlight-summary-displaying)
(run-hooks 'wl-summary-redisplay-hook))
(setq wl-summary-buffer-current-msg num)
(when wl-summary-recenter
(recenter (/ (- (window-height) 2) 2))
- (if (not wl-summary-width)
+ (if (not wl-summary-indent-length-limit)
(wl-horizontal-recenter)))
(wl-highlight-summary-displaying)
(run-hooks 'wl-summary-redisplay-hook))
"Supersede current message."
(interactive)
(let ((summary-buf (current-buffer))
- (mmelmo-force-fetch-entire-message t)
message-buf from)
(wl-summary-set-message-buffer-or-redisplay)
(if (setq message-buf (wl-message-get-original-buffer))
(defun wl-summary-save (&optional arg wl-save-dir)
(interactive)
(let ((filename)
- (num (wl-summary-message-number))
- (mmelmo-force-fetch-entire-message t))
+ (num (wl-summary-message-number)))
(if (null wl-save-dir)
- (setq wl-save-dir wl-tmp-dir))
+ (setq wl-save-dir wl-temporary-file-directory))
(if num
(save-excursion
(setq filename (expand-file-name
(narrow-to-region beg end)
(goto-char (point-min))
(let ((wl-save-dir
- (wl-read-directory-name "Save to directory: " wl-tmp-dir)))
+ (wl-read-directory-name "Save to directory: "
+ wl-temporary-file-directory)))
(if (null (file-exists-p wl-save-dir))
(make-directory wl-save-dir))
(if (eq wl-summary-buffer-view 'thread)
(set-buffer tmp-buf)
(message "Exec %s..." wl-prog-uudecode)
(unwind-protect
- (let ((decode-dir wl-tmp-dir))
+ (let ((decode-dir wl-temporary-file-directory))
(if (not wl-prog-uudecode-no-stdout-option)
(setq filename (read-file-name "Save to file: "
(expand-file-name
(elmo-safe-filename filename)
- wl-tmp-dir)))
+ wl-temporary-file-directory)))
(setq decode-dir
(wl-read-directory-name "Save to directory: "
- wl-tmp-dir))
+ wl-temporary-file-directory))
(setq filename (expand-file-name filename decode-dir)))
(if (file-exists-p filename)
(or (yes-or-no-p (format "File %s exists. Save anyway? "