Commit 1a6a03e4 authored by Kenichi Handa's avatar Kenichi Handa
Browse files

Fix setting of buffer-file-coding-system of RMAIL buffer.

parent 07ee9351
2011-01-14 Kenichi Handa <>
* mail/rmailmm.el (rmail-mime-insert-header): Set
rmail-mime-coding-system to a cons whose car is the last coding
system used to decode the header.
(rmail-mime-find-header-encoding): New function.
(rmail-mime-insert-decoded-text): Override
rmail-mime-coding-system if it is a cons.
(rmail-show-mime): If only a header part was decoded, find the
coding system while ignoring mm-charset-override-alist.
2011-01-12 Kenichi Handa <>
* mail/rmailmm.el (rmail-mime-next-item)
......@@ -460,12 +460,27 @@ See `rmail-mime-entity' for the detail."
(rmail-copy-headers (point) (aref header 1)))))
(rfc2047-decode-region pos (point))
(if (and last-coding-system-used (not rmail-mime-coding-system))
(setq rmail-mime-coding-system last-coding-system-used))
(setq rmail-mime-coding-system (cons last-coding-system-used nil)))
(goto-char (point-min))
(goto-char (point-max))
(insert "\n"))))
(defun rmail-mime-find-header-encoding (header)
"Retun the last coding system used to decode HEADER.
HEADER is a header component of a MIME-entity object (see
(let ((last-coding-system-used nil))
(with-current-buffer rmail-mime-mbox-buffer
(let ((rmail-buffer rmail-mime-mbox-buffer)
(rmail-view-buffer rmail-mime-view-buffer))
(goto-char (aref header 0))
(rmail-copy-headers (point) (aref header 1)))))
(rfc2047-decode-region (point-min) (point-max))
(defun rmail-mime-text-handler (content-type
......@@ -498,7 +513,7 @@ See `rmail-mime-entity' for the detail."
((string= transfer-encoding "quoted-printable")
(quoted-printable-decode-region pos (point))))))
(decode-coding-region pos (point) coding-system)
(or rmail-mime-coding-system
(if (or (not rmail-mime-coding-system) (consp rmail-mime-coding-system))
(setq rmail-mime-coding-system coding-system))
(or (bolp) (insert "\n"))))
......@@ -1274,8 +1289,19 @@ attachments as specfied by `rmail-mime-attachment-dirs-alist'."
(with-current-buffer rmail-mime-view-buffer
(rmail-mime-insert entity)
(if rmail-mime-coding-system
(set-buffer-file-coding-system rmail-mime-coding-system t t)))
(if (consp rmail-mime-coding-system)
;; Decoding is done by rfc2047-decode-region only for a
;; header. But, as the used coding system may have been
;; overriden by mm-charset-override-alist, we can't
;; trust (car rmail-mime-coding-system). So, here we
;; try the decoding again with mm-charset-override-alist
;; bound to nil.
(let ((mm-charset-override-alist nil))
(setq rmail-mime-coding-system
(rmail-mime-entity-header entity)))))
(coding-system-base rmail-mime-coding-system) t t))
;; Decoding failed. ENTITY is an error message. Insert the
;; original message body as is, and show warning.
(let ((region (with-current-buffer rmail-mime-mbox-buffer
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment