]> git.notmuchmail.org Git - notmuch/blobdiff - emacs/notmuch-show.el
emacs: `with-current-notmuch-show-message' should not leak `coding-system-for-read'
[notmuch] / emacs / notmuch-show.el
index 529baa972bbeccd49f70b7f50f796ed1959c41ad..b8cfbb8a3286540d7bb57caf8cf62a88f7032bd8 100644 (file)
@@ -224,7 +224,13 @@ For example, if you wanted to remove an \"unread\" tag and add a
   :group 'notmuch-show)
 
 (defcustom notmuch-show-mark-read-function #'notmuch-show-seen-current-message
-  "Function to control which messages are marked read."
+  "Function to control which messages are marked read.
+
+The function should take two arguments START and END which will
+be the start and end of the visible portion of the buffer and
+should mark the appropriate messages read by applying
+`notmuch-show-mark-read'. This function will be called after
+every user interaction with notmuch."
   :type 'function
   :group 'notmuch-show)
 
@@ -235,9 +241,9 @@ For example, if you wanted to remove an \"unread\" tag and add a
        (let ((buf (generate-new-buffer (concat "*notmuch-msg-" id "*"))))
          (with-current-buffer buf
           (let ((coding-system-for-read 'no-conversion))
-            (call-process notmuch-command nil t nil "show" "--format=raw" id)
-            ,@body)
-          (kill-buffer buf))))))
+            (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."
@@ -711,7 +717,7 @@ message at DEPTH in the current thread."
   (let ((start (if button
                   (button-start button)
                 (point))))
-    (insert (notmuch-get-bodypart-content msg part nth notmuch-show-process-crypto))
+    (insert (notmuch-get-bodypart-content msg part notmuch-show-process-crypto))
     (save-excursion
       (save-restriction
        (narrow-to-region start (point-max))
@@ -720,7 +726,7 @@ message at DEPTH in the current thread."
 
 (defun notmuch-show-insert-part-text/calendar (msg part content-type nth depth button)
   (insert (with-temp-buffer
-           (insert (notmuch-get-bodypart-content msg part nth notmuch-show-process-crypto))
+           (insert (notmuch-get-bodypart-content msg part notmuch-show-process-crypto))
            ;; notmuch-get-bodypart-content provides "raw", non-converted
            ;; data. Replace CRLF with LF before icalendar can use it.
            (goto-char (point-min))
@@ -772,7 +778,7 @@ message at DEPTH in the current thread."
 
 (defun notmuch-show-insert-part-*/* (msg part content-type nth depth button)
   ;; This handler _must_ succeed - it is the handler of last resort.
-  (notmuch-mm-display-part-inline msg part nth content-type notmuch-show-process-crypto)
+  (notmuch-mm-display-part-inline msg part content-type notmuch-show-process-crypto)
   t)
 
 ;; Functions for determining how to handle MIME parts.
@@ -1485,7 +1491,8 @@ they just need the correct message properties."
                   (cond ((eq major-mode 'notmuch-show-mode)
                          (notmuch-show-get-message-properties))
                         ((eq major-mode 'notmuch-tree-mode)
-                         (notmuch-tree-get-message-properties))))))
+                         (notmuch-tree-get-message-properties))
+                        (t nil)))))
     (plist-get props prop)))
 
 (defun notmuch-show-get-message-id (&optional bare)
@@ -1791,11 +1798,12 @@ to show, nil otherwise."
   (notmuch-show-message-adjust))
 
 (defun notmuch-show-view-raw-message ()
-  "View the file holding the current message."
+  "View the original source of the current message."
   (interactive)
   (let* ((id (notmuch-show-get-message-id))
         (buf (get-buffer-create (concat "*notmuch-raw-" id "*"))))
-    (call-process notmuch-command nil buf nil "show" "--format=raw" id)
+    (let ((coding-system-for-read 'no-conversion))
+      (call-process notmuch-command nil buf nil "show" "--format=raw" id))
     (switch-to-buffer buf)
     (goto-char (point-min))
     (set-buffer-modified-p nil)
@@ -1954,7 +1962,7 @@ buffer. If PREVIOUS is non-nil, move to the previous item in the
 search results instead."
   (interactive "P")
   (let ((parent-buffer notmuch-show-parent-buffer))
-    (notmuch-kill-this-buffer)
+    (notmuch-bury-or-kill-this-buffer)
     (when (buffer-live-p parent-buffer)
       (switch-to-buffer parent-buffer)
       (and (if previous