[PATCH 1/4] emacs: notmuch-show-view-raw-message clears buffer, makes it read-only
authorTomi Ollila <tomi.ollila@iki.fi>
Wed, 2 Sep 2015 14:34:39 +0000 (17:34 +0300)
committerW. Trevor King <wking@tremily.us>
Sat, 20 Aug 2016 21:49:29 +0000 (14:49 -0700)
6f/08b3ccfaf11798ee41d5eacbfc5974862cc29c [new file with mode: 0644]

diff --git a/6f/08b3ccfaf11798ee41d5eacbfc5974862cc29c b/6f/08b3ccfaf11798ee41d5eacbfc5974862cc29c
new file mode 100644 (file)
index 0000000..0381c43
--- /dev/null
@@ -0,0 +1,84 @@
+Return-Path: <too@guru-group.fi>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+ by arlo.cworth.org (Postfix) with ESMTP id C9FBE6DE0C51\r
+ for <notmuch@notmuchmail.org>; Wed,  2 Sep 2015 07:36:19 -0700 (PDT)\r
+X-Virus-Scanned: Debian amavisd-new at cworth.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: 0.233\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=0.233 tagged_above=-999 required=5 tests=[AWL=0.773, \r
+ RP_MATCHES_RCVD=-0.55, T_HEADER_FROM_DIFFERENT_DOMAINS=0.01]\r
+ autolearn=disabled\r
+Received: from arlo.cworth.org ([127.0.0.1])\r
+ by localhost (arlo.cworth.org [127.0.0.1]) (amavisd-new, port 10024)\r
+ with ESMTP id 9Kr-FzGVOxq8 for <notmuch@notmuchmail.org>;\r
+ Wed,  2 Sep 2015 07:36:17 -0700 (PDT)\r
+Received: from guru.guru-group.fi (guru.guru-group.fi [46.183.73.34])\r
+ by arlo.cworth.org (Postfix) with ESMTP id 1A4026DE0B38\r
+ for <notmuch@notmuchmail.org>; Wed,  2 Sep 2015 07:36:16 -0700 (PDT)\r
+Received: by guru.guru-group.fi (Postfix, from userid 501)\r
+ id 6054110019C; Wed,  2 Sep 2015 17:34:45 +0300 (EEST)\r
+From: Tomi Ollila <tomi.ollila@iki.fi>\r
+To: notmuch@notmuchmail.org\r
+Subject: [PATCH 1/4] emacs: notmuch-show-view-raw-message clears buffer,\r
+ makes it read-only\r
+Date: Wed,  2 Sep 2015 17:34:39 +0300\r
+Message-Id: <1441204482-26509-1-git-send-email-tomi.ollila@iki.fi>\r
+X-Mailer: git-send-email 2.0.0\r
+Cc: tomi.ollila@iki.fi\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.18\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+ <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
+ <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
+List-Archive: <http://notmuchmail.org/pipermail/notmuch/>\r
+List-Post: <mailto:notmuch@notmuchmail.org>\r
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
+ <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Wed, 02 Sep 2015 14:36:19 -0000\r
+\r
+notmuch-show-view-raw-message() re-uses buffer created with same\r
+name (same Message-Id:) but it did not erase it before filling.\r
+If this ever happened, there were duplicated (potentially overlapping)\r
+content in the buffer. Now this is fixed.\r
+Apparently since emacs 24.5 the (view-buffer) makes the buffer read-only;\r
+so this problem would not have happened there, just that\r
+notmuch-show-view-raw-message() failed. This is fixed by setting\r
+inhibit-read-only t before erasing and filling the buffer. The emacs 24.5\r
+feature having raw message buffer read-only is also now explicitly set to\r
+the buffer so the same experience is available with emaces < 24.5.\r
+---\r
+ emacs/notmuch-show.el | 9 ++++++---\r
+ 1 file changed, 6 insertions(+), 3 deletions(-)\r
+\r
+diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el\r
+index 848ec2c870c4..0565ab0725b2 100644\r
+--- a/emacs/notmuch-show.el\r
++++ b/emacs/notmuch-show.el\r
+@@ -1886,12 +1886,15 @@ (defun notmuch-show-view-raw-message ()\r
+   "View the original source of the current message."\r
+   (interactive)\r
+   (let* ((id (notmuch-show-get-message-id))\r
+-       (buf (get-buffer-create (concat "*notmuch-raw-" id "*"))))\r
+-    (let ((coding-system-for-read 'no-conversion))\r
+-      (call-process notmuch-command nil buf nil "show" "--format=raw" id))\r
++       (buf (get-buffer-create (concat "*notmuch-raw-" id "*")))\r
++       (inhibit-read-only t))\r
+     (switch-to-buffer buf)\r
++    (erase-buffer)\r
++    (let ((coding-system-for-read 'no-conversion))\r
++      (call-process notmuch-command nil t nil "show" "--format=raw" id))\r
+     (goto-char (point-min))\r
+     (set-buffer-modified-p nil)\r
++    (setq buffer-read-only t)\r
+     (view-buffer buf 'kill-buffer-if-not-modified)))\r
\r
+ (put 'notmuch-show-pipe-message 'notmuch-doc\r
+-- \r
+2.0.0\r
+\r