diff lisp/mail/rmailedit.el @ 101867:07f6502ced98

(rmail-cease-edit): narrow-to-region before extracting mail message headers. Use encode-coding-region instead of insert-buffer-substring for re-encoding edited message. Add qp/b64 encoding only after text was encoded.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 07 Feb 2009 12:54:35 +0000
parents b87c9a6e8490
children cf870c811594
line wrap: on
line diff
--- a/lisp/mail/rmailedit.el	Sat Feb 07 11:48:40 2009 +0000
+++ b/lisp/mail/rmailedit.el	Sat Feb 07 12:54:35 2009 +0000
@@ -145,38 +145,38 @@
 
       (rmail-swap-buffers-maybe)
 
+      (narrow-to-region (rmail-msgbeg 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))
       (if character-coding
 	  (setq character-coding (downcase character-coding)))
 
-      (narrow-to-region (rmail-msgbeg rmail-current-message)
-			(rmail-msgend rmail-current-message))
       (goto-char (point-min))
       (search-forward "\n\n")
-      (let ((inhibit-read-only t)
-	    (headers-end-1 (point)))
-	(insert-buffer-substring rmail-view-buffer headers-end)
-	(delete-region (point) (point-max))
+      (let ((inhibit-read-only t))
+	(let ((data-buffer (current-buffer))
+	      (end (copy-marker (point) t)))
+	  (with-current-buffer rmail-view-buffer
+	    (encode-coding-region headers-end (point-max) coding-system
+				  data-buffer))
+	  (delete-region end (point-max)))
 
 	;; Re-encode the message body in whatever
 	;; way it was decoded.
 	(cond
 	 ((string= character-coding "quoted-printable")
-	  (mail-quote-printable-region headers-end-1 (point-max)))
+	  (mail-quote-printable-region (point) (point-max)))
 	 ((and (string= character-coding "base64") is-text-message)
-	  (base64-encode-region headers-end-1 (point-max)))
+	  (base64-encode-region (point) (point-max)))
 	 ((eq character-coding 'uuencode)
-	  (error "Not supported yet."))
-	 (t
-	  (if (or (not coding-system) (not (coding-system-p coding-system)))
-	      (setq coding-system 'undecided))
-	  (encode-coding-region headers-end-1 (point-max) coding-system)))
+	  (error "uuencoded messages are not supported yet.")))
 	))
 
     (rmail-set-attribute rmail-edited-attr-index t)
-	
+
     ;;??? BROKEN perhaps.
     ;; I think that the Summary-Line header may not be kept there any more.
 ;;;       (if (boundp 'rmail-summary-vector)