mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
contrib: pick: close message pane when quitting from show in the message pane
We add a hook to the show buffer in the message window to close the message window when that buffer quits. It checks that the message-window is still displaying the show-message buffer and then closes it.
This commit is contained in:
parent
525ee27ed0
commit
a1ddf62f6a
1 changed files with 19 additions and 0 deletions
|
@ -157,6 +157,10 @@
|
||||||
(make-variable-buffer-local 'notmuch-pick-query-context)
|
(make-variable-buffer-local 'notmuch-pick-query-context)
|
||||||
(defvar notmuch-pick-buffer-name nil)
|
(defvar notmuch-pick-buffer-name nil)
|
||||||
(make-variable-buffer-local 'notmuch-pick-buffer-name)
|
(make-variable-buffer-local 'notmuch-pick-buffer-name)
|
||||||
|
;; This variable is the window used for the message pane. It is set
|
||||||
|
;; in both the parent pick buffer and the child show buffer. It is
|
||||||
|
;; used to try and close the message pane when quitting pick or the
|
||||||
|
;; child show buffer.
|
||||||
(defvar notmuch-pick-message-window nil)
|
(defvar notmuch-pick-message-window nil)
|
||||||
(make-variable-buffer-local 'notmuch-pick-message-window)
|
(make-variable-buffer-local 'notmuch-pick-message-window)
|
||||||
(put 'notmuch-pick-message-window 'permanent-local t)
|
(put 'notmuch-pick-message-window 'permanent-local t)
|
||||||
|
@ -343,6 +347,16 @@ Does NOT change the database."
|
||||||
(notmuch-prettify-subject (notmuch-search-find-subject)))
|
(notmuch-prettify-subject (notmuch-search-find-subject)))
|
||||||
(notmuch-pick-show-match-message-with-wait))
|
(notmuch-pick-show-match-message-with-wait))
|
||||||
|
|
||||||
|
(defun notmuch-pick-message-window-kill-hook ()
|
||||||
|
(let ((buffer (current-buffer)))
|
||||||
|
(when (and (window-live-p notmuch-pick-message-window)
|
||||||
|
(eq (window-buffer notmuch-pick-message-window) buffer))
|
||||||
|
;; We do not want an error if this is the sole window in the
|
||||||
|
;; frame and I do not know how to test for that in emacs pre
|
||||||
|
;; 24. Hence we just ignore-errors.
|
||||||
|
(ignore-errors
|
||||||
|
(delete-window notmuch-pick-message-window)))))
|
||||||
|
|
||||||
(defun notmuch-pick-show-message ()
|
(defun notmuch-pick-show-message ()
|
||||||
"Show the current message (in split-pane)."
|
"Show the current message (in split-pane)."
|
||||||
(interactive)
|
(interactive)
|
||||||
|
@ -360,6 +374,11 @@ Does NOT change the database."
|
||||||
(let ((notmuch-show-indent-messages-width 0))
|
(let ((notmuch-show-indent-messages-width 0))
|
||||||
(setq current-prefix-arg '(4))
|
(setq current-prefix-arg '(4))
|
||||||
(setq buffer (notmuch-show id nil nil nil))))
|
(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-pick-message-window window)
|
||||||
|
(add-hook 'kill-buffer-hook 'notmuch-pick-message-window-kill-hook)))
|
||||||
(notmuch-pick-tag-update-display (list "-unread"))
|
(notmuch-pick-tag-update-display (list "-unread"))
|
||||||
(setq notmuch-pick-message-buffer buffer))))
|
(setq notmuch-pick-message-buffer buffer))))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue