emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/lisp/mail rmailedit.el


From: Eli Zaretskii
Subject: [Emacs-diffs] emacs/lisp/mail rmailedit.el
Date: Sat, 07 Feb 2009 15:16:01 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Eli Zaretskii <eliz>    09/02/07 15:16:01

Modified files:
        lisp/mail      : rmailedit.el 

Log message:
        (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)

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/mail/rmailedit.el?cvsroot=emacs&r1=1.48&r2=1.49

Patches:
Index: rmailedit.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/mail/rmailedit.el,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -b -r1.48 -r1.49
--- rmailedit.el        7 Feb 2009 12:54:35 -0000       1.48
+++ rmailedit.el        7 Feb 2009 15:16:01 -0000       1.49
@@ -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
@@ -148,14 +148,22 @@
       (narrow-to-region (rmail-msgbeg rmail-current-message)
                        (rmail-msgend rmail-current-message))
 
-      (setq character-coding (mail-fetch-field "content-transfer-encoding")
+      (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))
+             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.")))
        ))
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]