From b573fcce2087c67ec374e1228d5b2756799bc7cd Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Wed, 3 Oct 2018 00:04:08 -0400 Subject: [PATCH] quit-window on multiple magit-status windows If you accidentally open multiple magit status windows, you'll be stuck in a deadlock, where `q` will do nothing. Now, +magit/quit will use `quit-window` on excess magit-status windows instead. --- modules/tools/magit/autoload.el | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/modules/tools/magit/autoload.el b/modules/tools/magit/autoload.el index d6cda9596..fd19a45e6 100644 --- a/modules/tools/magit/autoload.el +++ b/modules/tools/magit/autoload.el @@ -53,13 +53,16 @@ "Clean up magit buffers after quitting `magit-status' and refresh version control in buffers." (interactive) - (mapc #'+magit--kill-buffer (magit-mode-get-buffers)) - (dolist (buffer (buffer-list)) - (with-current-buffer buffer - (when (fboundp 'vc-refresh-state) - (vc-refresh-state)) - (when (fboundp '+version-control|update-git-gutter) - (+version-control|update-git-gutter))))) + (if (cdr (delq nil (mapcar (lambda (win) (with-selected-window win (eq major-mode 'magit-status-mode))) + (window-list)))) + (quit-window) + (mapc #'+magit--kill-buffer (magit-mode-get-buffers)) + (dolist (buffer (buffer-list)) + (with-current-buffer buffer + (when (fboundp 'vc-refresh-state) + (vc-refresh-state)) + (when (fboundp '+version-control|update-git-gutter) + (+version-control|update-git-gutter)))))) (defun +magit--kill-buffer (buf) "TODO"