From 46ca26457a35d76bdcbd4fd5f3eb730770083a3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20F=C3=BCrmetz?= Date: Mon, 1 Feb 2016 21:33:18 +0100 Subject: [PATCH] mu4e: restore window-layout after `message-kill-buffer' Replaces `message-kill-buffer' with `mu4e-message-kill-buffer'. This new function is a wrapper around the original. It restores the window-layout of mu4e after cancelling a message in mu4e-compose-mode. --- mu4e/mu4e-compose.el | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/mu4e/mu4e-compose.el b/mu4e/mu4e-compose.el index 4e3542e6..d89ae4b1 100644 --- a/mu4e/mu4e-compose.el +++ b/mu4e/mu4e-compose.el @@ -314,6 +314,7 @@ message-thread by removing the In-Reply-To header." (let ((map (make-sparse-keymap))) (define-key map (kbd "C-S-u") 'mu4e-update-mail-and-index) (define-key map (kbd "C-c C-u") 'mu4e-update-mail-and-index) + (define-key map (kbd "C-c C-k") 'mu4e-message-kill-buffer) map))) (defvar mu4e-compose-mode-abbrev-table nil) @@ -472,6 +473,24 @@ the appropriate flag at the message forwarded or replied-to." (when (fboundp 'mu4e) (mu4e)))) (mu4e-message "Message sent")) +(defun mu4e-message-kill-buffer () + "Wrapper around `message-kill-buffer'. +It restores mu4e window layout after killing the compose-buffer." + (interactive) + (let ((current-buffer (current-buffer))) + (message-kill-buffer) + ;; Compose buffer killed + (when (not (equal current-buffer (current-buffer))) + ;; Restore mu4e + (if mu4e-compose-in-new-frame + (delete-frame) + (if (buffer-live-p mu4e~view-buffer) + (switch-to-buffer mu4e~view-buffer) + (if (buffer-live-p mu4e~headers-buffer) + (switch-to-buffer mu4e~headers-buffer) + ;; if all else fails, back to the main view + (when (fboundp 'mu4e) (mu4e)))))))) + (defun mu4e~compose-set-parent-flag (path) "Set the 'replied' \"R\" flag on messages we replied to, and the 'passed' \"F\" flag on message we have forwarded.