From 59c994e770581acb8effde7057d09823e1194830 Mon Sep 17 00:00:00 2001 From: Tomi Ollila Date: Sun, 18 Nov 2012 22:06:25 +0200 Subject: [PATCH] emacs: less guessing of character set in messages The macro with-current-notmuch-show-message executes command `notmuch show --format=raw id:...` which just outputs the contents of the mail file verbatim (into temporary buffer). In case e.g. utf-8 locale is used the temporary buffer has buffer-file-coding-system as utf-8. In this case Emacs converts the data to multibyte format, guessing that input is in utf-8. However, the "raw" (MIME) message may contain octet data in any other 8bit format, and as no (MIME-)content spesific handling to the message is done at this point, conversion to other formats may lose information. By setting coding-system-for-read 'no-conversion drops the conversion part and makes this handle input as notmuch-get-bodypart-internal() does. This marks the broken test in previous change fixed. --- emacs/notmuch-show.el | 7 ++++--- test/emacs | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 24db4c70..489e32c8 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -203,9 +203,10 @@ For example, if you wanted to remove an \"unread\" tag and add a (let ((id (notmuch-show-get-message-id))) (let ((buf (generate-new-buffer (concat "*notmuch-msg-" id "*")))) (with-current-buffer buf - (call-process notmuch-command nil t nil "show" "--format=raw" id) - ,@body) - (kill-buffer buf))))) + (let ((coding-system-for-read 'no-conversion)) + (call-process notmuch-command nil t nil "show" "--format=raw" id) + ,@body) + (kill-buffer buf)))))) (defun notmuch-show-turn-on-visual-line-mode () "Enable Visual Line mode." diff --git a/test/emacs b/test/emacs index e01a6ff4..4e941bbd 100755 --- a/test/emacs +++ b/test/emacs @@ -517,7 +517,6 @@ test_emacs '(let ((standard-input "\"attachment2.gz\"")) test_expect_equal_file attachment2.gz "$EXPECTED/attachment" test_begin_subtest "Save 8bit attachment from within emacs using notmuch-show-save-attachments" -test_subtest_known_broken add_message '[subject]="Attachment with 8bit chars"' \ '[header]="MIME-Version: 1.0"' \