Mercurial > emacs
changeset 101871:cf870c811594
(rmail-cease-edit): Look for the message's encoding, and its
"content-transfer-encoding" and "content-type" headers only in the
headers' portion. (Bug#2017)
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Sat, 07 Feb 2009 15:16:01 +0000 |
parents | 085bed32d1c1 |
children | 288dd91ca0c1 |
files | lisp/mail/rmailedit.el |
diffstat | 1 files changed, 18 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/mail/rmailedit.el Sat Feb 07 13:24:06 2009 +0000 +++ b/lisp/mail/rmailedit.el Sat Feb 07 15:16:01 2009 +0000 @@ -124,7 +124,7 @@ (insert "\n"))) (let ((old rmail-old-text) character-coding is-text-message coding-system - headers-end) + headers-end limit) ;; Go back to Rmail mode, but carefully. (force-mode-line-update) (let ((rmail-buffer-swapped nil)) ; Prevent change-major-mode-hook @@ -146,16 +146,24 @@ (rmail-swap-buffers-maybe) (narrow-to-region (rmail-msgbeg rmail-current-message) - (rmail-msgend rmail-current-message)) + (rmail-msgend rmail-current-message)) - (setq character-coding (mail-fetch-field "content-transfer-encoding") - is-text-message (rmail-is-text-p) - coding-system (rmail-get-coding-system)) + (save-restriction + (setq limit + (save-excursion + (goto-char (point-min)) + (search-forward "\n\n" nil t))) + ;; All 3 of the functions we call below assume the buffer was + ;; narrowed to just the headers of the message. + (narrow-to-region (rmail-msgbeg rmail-current-message) limit) + (setq character-coding + (mail-fetch-field "content-transfer-encoding") + is-text-message (rmail-is-text-p) + coding-system (rmail-get-coding-system))) (if character-coding (setq character-coding (downcase character-coding))) - (goto-char (point-min)) - (search-forward "\n\n") + (goto-char limit) (let ((inhibit-read-only t)) (let ((data-buffer (current-buffer)) (end (copy-marker (point) t))) @@ -164,14 +172,14 @@ data-buffer)) (delete-region end (point-max))) - ;; Re-encode the message body in whatever - ;; way it was decoded. + ;; Re-apply content-transfer-encoding, if any, on the message + ;; body. (cond ((string= character-coding "quoted-printable") (mail-quote-printable-region (point) (point-max))) ((and (string= character-coding "base64") is-text-message) (base64-encode-region (point) (point-max))) - ((eq character-coding 'uuencode) + ((and (eq character-coding 'uuencode) is-text-message) (error "uuencoded messages are not supported yet."))) ))