Fix setting of buffer-file-coding-system of RMAIL buffer.
This commit is contained in:
parent
07ee935146
commit
1a6a03e4a3
2 changed files with 41 additions and 4 deletions
|
|
@ -1,3 +1,14 @@
|
|||
2011-01-14 Kenichi Handa <handa@m17n.org>
|
||||
|
||||
* 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 <handa@m17n.org>
|
||||
|
||||
* 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))
|
||||
(rmail-highlight-headers)
|
||||
(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
|
||||
`rmail-mime-entity')."
|
||||
(with-temp-buffer
|
||||
(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))
|
||||
(save-excursion
|
||||
(goto-char (aref header 0))
|
||||
(rmail-copy-headers (point) (aref header 1)))))
|
||||
(rfc2047-decode-region (point-min) (point-max))
|
||||
last-coding-system-used)))
|
||||
|
||||
(defun rmail-mime-text-handler (content-type
|
||||
content-disposition
|
||||
content-transfer-encoding)
|
||||
|
|
@ -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
|
||||
(erase-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-find-header-encoding
|
||||
(rmail-mime-entity-header entity)))))
|
||||
(set-buffer-file-coding-system
|
||||
(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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue