summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/mail/rmail.el21
1 files changed, 18 insertions, 3 deletions
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index 078cb81a5fc..d7a25ea7059 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -488,7 +488,10 @@ If `rmail-display-summary' is non-nil, make a summary for this RMAIL file."
;; This binding is necessary because we much decide if we
;; need code conversion while the buffer is unibyte
;; (i.e. enable-multibyte-characters is nil).
- (rmail-enable-multibyte (default-value 'enable-multibyte-characters))
+ (rmail-enable-multibyte
+ (if existed
+ (with-current-buffer existed enable-multibyte-characters)
+ (default-value 'enable-multibyte-characters)))
;; Since the file may contain messages of different encodings
;; at the tail (non-BYBYL part), we can't decode them at once
;; on reading. So, at first, we read the file without text
@@ -966,15 +969,27 @@ Instead, these commands are available:
;; Handle M-x revert-buffer done in an rmail-mode buffer.
(defun rmail-revert (arg noconfirm)
- (let ((revert-buffer-function (default-value 'revert-buffer-function)))
+ (let* ((revert-buffer-function (default-value 'revert-buffer-function))
+ (rmail-enable-multibyte enable-multibyte-characters)
+ ;; See similar code in `rmail'.
+ (coding-system-for-read (and rmail-enable-multibyte 'raw-text)))
;; Call our caller again, but this time it does the default thing.
(if (revert-buffer arg noconfirm)
;; If the user said "yes", and we changed something,
;; reparse the messages.
(progn
+ (rmail-mode-2)
+ ;; Convert all or part to Babyl file if possible.
(rmail-convert-file)
+ ;; We have read the file as raw-text, so the buffer is set to
+ ;; unibyte. Make it multibyte if necessary.
+ (if (and rmail-enable-multibyte
+ (not enable-multibyte-characters))
+ (set-buffer-multibyte t))
(goto-char (point-max))
- (rmail-mode)))))
+ (rmail-set-message-counters)
+ (rmail-show-message rmail-total-messages)
+ (run-hooks 'rmail-mode-hook)))))
;; Return a list of files from this buffer's Mail: option.
;; Does not assume that messages have been parsed.