[PATCH (draft)] contrib: pick: close message pane when quitting from show in the message pane

Subject: [PATCH (draft)] contrib: pick: close message pane when quitting from show in the message pane

Date: Thu, 13 Dec 2012 09:31:49 +0000

To: notmuch@notmuchmail.org

Cc:

From: Mark Walters


This is a way of trying to make sure notmuch-pick cleans up the split
buffer after itself.
---

Currently if the focus gets into the message pane and then the user
quits from that pane the display stays split. This is an attempt to
fix that. This seems to work but I don't know if there is a better
solution. However, I would welcome any feedback on the user experience
with this patch applied.

Best wishes

Mark




 contrib/notmuch-pick/notmuch-pick.el |   17 +++++++++++++++++
 1 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/contrib/notmuch-pick/notmuch-pick.el b/contrib/notmuch-pick/notmuch-pick.el
index 043e9e7..79ef319 100644
--- a/contrib/notmuch-pick/notmuch-pick.el
+++ b/contrib/notmuch-pick/notmuch-pick.el
@@ -160,6 +160,9 @@
 (defvar notmuch-pick-message-window nil)
 (make-variable-buffer-local 'notmuch-pick-message-window)
 (put 'notmuch-pick-message-window 'permanent-local t)
+(defvar notmuch-show-message-window nil)
+(make-variable-buffer-local 'notmuch-show-message-window)
+(put 'notmuch-show-message-window 'permanent-local t)
 (defvar notmuch-pick-message-buffer nil)
 (make-variable-buffer-local 'notmuch-pick-message-buffer-name)
 (put 'notmuch-pick-message-buffer-name 'permanent-local t)
@@ -389,6 +392,16 @@ Does NOT change the database."
                 (notmuch-prettify-subject (notmuch-search-find-subject)))
   (notmuch-pick-show-match-message-with-wait))
 
+;;over-ride this function to try and kill off message panes
+(defun notmuch-kill-this-buffer ()
+  "Kill the current buffer."
+  (interactive)
+  (let ((buffer (current-buffer)))
+    (when (and (window-live-p notmuch-show-message-window)
+	     (eq (window-buffer notmuch-show-message-window) buffer))
+      (delete-window notmuch-show-message-window))
+    (kill-buffer buffer)))
+
 (defun notmuch-pick-show-message ()
   "Show the current message (in split-pane)."
   (interactive)
@@ -406,6 +419,10 @@ Does NOT change the database."
 	(let ((notmuch-show-indent-messages-width 0))
 	  (setq current-prefix-arg '(4))
 	  (setq buffer (notmuch-show id nil nil nil))))
+      ;; We need the let as notmuch-pick-message-window is buffer local.
+      (let ((window notmuch-pick-message-window))
+	(with-current-buffer buffer
+	  (setq notmuch-show-message-window window)))
       (notmuch-pick-tag-update-display (list "-unread"))
       (setq notmuch-pick-message-buffer buffer))))
 
-- 
1.7.9.1


Thread: