--- lisp/mail/rmailedit.old.el 2017-07-06 10:27:25.654906559 -0400 +++ lisp/mail/rmailedit.el 2017-10-02 13:44:25.050239587 -0400 @@ -312,26 +312,34 @@ (data-buffer (current-buffer)) (start (copy-marker (point) nil)) ; new body will be between (end (copy-marker (point) t))) ; these two markers - (with-current-buffer rmail-view-buffer - (encode-coding-region headers-end (point-max) coding-system - data-buffer)) - (delete-region end (point-max)) + (if mime-state + ;; Message is already in encoded state + (insert-buffer-substring rmail-view-buffer headers-end + (with-current-buffer rmail-view-buffer + (point-max))) + (with-current-buffer rmail-view-buffer + (encode-coding-region headers-end (point-max) coding-system + data-buffer))) ;; Apply to the mbox buffer any changes in header fields ;; that the user made while editing in the view buffer. - (rmail-edit-update-headers (rmail-edit-diff-headers + (rmail-edit-update-headers (rmail-edit-diff-headers rmail-old-headers new-headers)) ;; Re-apply content-transfer-encoding, if any, on the message body. (cond + (mime-state) ; if set, already transfer-encoded ((string= character-coding "quoted-printable") - (mail-quote-printable-region start (point-max))) + (mail-quote-printable-region start end)) ((and (string= character-coding "base64") is-text-message) - (base64-encode-region start (point-max))) + (base64-encode-region start end)) ((and (eq character-coding 'uuencode) is-text-message) (error "uuencoded messages are not supported"))) ;; After encoding, make sure buffer ends with a blank line so as not to ;; run this message together with the following one. - (goto-char (point-max)) - (rmail-ensure-blank-line)) + (goto-char end) + (rmail-ensure-blank-line) + ;; Delete previous body. This must be after all insertions at the end, + ;; so the marker for the beginning of the next message isn't messed up. + (delete-region end (point-max))) (rmail-set-attribute rmail-edited-attr-index t)) ;;;??? BROKEN perhaps. ;;; (if (boundp 'rmail-summary-vector)