emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master b5a3626: Don’t double-encode non-ASCII mail clipbo


From: Paul Eggert
Subject: [Emacs-diffs] master b5a3626: Don’t double-encode non-ASCII mail clipboard
Date: Mon, 14 Sep 2015 21:09:54 +0000

branch: master
commit b5a3626f316d2c0f1196a9718e51462c09a14568
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    Don’t double-encode non-ASCII mail clipboard
    
    * lisp/mail/mailclient.el (mailclient-send-it):
    Also fix the case when mailclient-place-body-on-clipboard-flag
    is non-nil.  Problem reported by Eli Zaretskii (Bug#21471#37).
---
 lisp/mail/mailclient.el |   56 +++++++++++++++++++++--------------------------
 1 files changed, 25 insertions(+), 31 deletions(-)

diff --git a/lisp/mail/mailclient.el b/lisp/mail/mailclient.el
index bef2038..2fb944b 100644
--- a/lisp/mail/mailclient.el
+++ b/lisp/mail/mailclient.el
@@ -175,37 +175,31 @@ The mail client is taken to be the handler of mailto 
URLs."
                               (mailclient-encode-string-as-url subj))
                     ""))))
              ;; body
-             (concat
-              (mailclient-url-delim) "body="
-              (mailclient-encode-string-as-url
-               (if mailclient-place-body-on-clipboard-flag
-                   (progn
-                     (clipboard-kill-ring-save
-                      (+ 1 delimline) (point-max))
-                     (concat
-                      "*** E-Mail body has been placed on clipboard, "
-                      "please paste it here! ***"))
-                 ;; else
-                 (let ((body (buffer-substring (+ 1 delimline) (point-max))))
-                   (if (null character-coding)
-                       body
-                     ;; mailto: requires UTF-8 and cannot deal with
-                     ;; Content-Transfer-Encoding or Content-Type.
-                     ;; FIXME: There is a lot of code duplication here
-                     ;; with rmail.el.
-                     (erase-buffer)
-                     (set-buffer-multibyte nil)
-                     (insert body)
-                     (cond
-                      ((string= character-coding "quoted-printable")
-                       (mail-unquote-printable-region (point-min) (point-max)
-                                                      nil nil 'unibyte))
-                      ((string= character-coding "base64")
-                       (base64-decode-region (point-min) (point-max)))
-                      (t (error "unsupported Content-Transfer-Encoding: %s"
-                                character-coding)))
-                     (decode-coding-region (point-min) (point-max)
-                                           coding-system t)))))))))))))
+             (mailclient-url-delim) "body="
+             (progn
+               (delete-region (point-min) delimline)
+               (unless (null character-coding)
+                 ;; mailto: and clipboard need UTF-8 and cannot deal with
+                 ;; Content-Transfer-Encoding or Content-Type.
+                 ;; FIXME: There is code duplication here with rmail.el.
+                 (set-buffer-multibyte nil)
+                 (cond
+                  ((string= character-coding "base64")
+                   (base64-decode-region (point-min) (point-max)))
+                  ((string= character-coding "quoted-printable")
+                   (mail-unquote-printable-region (point-min) (point-max)
+                                                  nil nil t))
+                  (t (error "unsupported Content-Transfer-Encoding: %s"
+                            character-coding)))
+                 (decode-coding-region (point-min) (point-max) coding-system))
+               (mailclient-encode-string-as-url
+                (if mailclient-place-body-on-clipboard-flag
+                    (progn
+                      (clipboard-kill-ring-save (point-min) (point-max))
+                      (concat
+                       "*** E-Mail body has been placed on clipboard, "
+                       "please paste it here! ***"))
+                  (buffer-string)))))))))))
 
 (provide 'mailclient)
 



reply via email to

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