From 65d758ce8fcb44784914bb383bc2e8f9005e6e10 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 24 Sep 2017 20:44:17 +0200 Subject: [PATCH] Add doom-popup-inhibit-autokill variable --- core/autoload/popups.el | 3 ++- core/core-popups.el | 11 +++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/core/autoload/popups.el b/core/autoload/popups.el index 8afa4cc4c..8bd4e854b 100644 --- a/core/autoload/popups.el +++ b/core/autoload/popups.el @@ -93,7 +93,8 @@ Returns t if popups were restored, nil otherwise." (select-window doom-popup-other-window) (other-window 1))) (if (doom-popup-windows) - (doom/popup-close-all t) + (let ((doom-popup-inhibit-autokill t)) + (doom/popup-close-all t)) (doom/popup-restore))) ;;;###autoload diff --git a/core/core-popups.el b/core/core-popups.el index 3dbb8c18e..f8b935dc9 100644 --- a/core/core-popups.el +++ b/core/core-popups.el @@ -39,6 +39,11 @@ "A list of window parameters that are set (and cleared) when `doom-popup-mode is enabled/disabled.'") +(defvar doom-popup-inhibit-autokill nil + "Don't set this directly. Let-bind it. When it is non-nil, no buffers will be +killed when their associated popup windows are closed, despite their :autokill +property.") + (def-setting! :popup (&rest rules) "Prepend a new popup rule to `shackle-rules' (see for format details). @@ -230,7 +235,8 @@ and setting `doom-popup-rules' within it. Returns the window." prevent the popup(s) from messing up the UI (or vice versa)." (let ((in-popup-p (doom-popup-p)) (popups (doom-popup-windows)) - (doom-popup-remember-history t)) + (doom-popup-remember-history t) + (doom-popup-inhibit-autokill t)) (when popups (mapc #'doom/popup-close popups)) (unwind-protect (apply orig-fn args) @@ -248,7 +254,8 @@ properties." (setq doom-popup-windows (delq window doom-popup-windows)) (when doom-popup-remember-history (setq doom-popup-history (list (doom--popup-data window)))) - (let ((autokill-p (plist-get doom-popup-rules :autokill))) + (let ((autokill-p (and (not doom-popup-inhibit-autokill) + (plist-get doom-popup-rules :autokill)))) (with-selected-window window (doom-popup-mode -1) (when autokill-p