From 1ed79e4156c16700b01dbed51f5cbdc53c72b4d4 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Thu, 9 Jul 1998 04:45:33 +0000 Subject: [PATCH] (rmail): If existing buffer, use local enable-multibyte-characters for rmail-enable-multibyte. (rmail-revert): Bind coding-system-for-read to raw-text, then convert and make buffer multibyte, as in `rmail'. --- lisp/mail/rmail.el | 21 ++++++++++++++++++--- 1 file 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. -- 2.39.2