From 37a07c79b7c25915b74d22f26f15347aa027566d Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 29 Dec 2017 22:30:34 -0500 Subject: [PATCH] popups: handle :autokill in a kill-buffer-query-fn --- core/autoload/popups.el | 10 +--------- core/core-popups.el | 10 ++++++++++ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/core/autoload/popups.el b/core/autoload/popups.el index a182d50c7..f4d2b6cd9 100644 --- a/core/autoload/popups.el +++ b/core/autoload/popups.el @@ -413,12 +413,4 @@ properties." (when (doom-popup-p window) (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 (and (not doom-popup-inhibit-autokill) - (doom-popup-property :autokill window)))) - (with-selected-window window - (doom-popup-mode -1) - (when autokill-p - (when-let* ((process (get-buffer-process (current-buffer)))) - (set-process-query-on-exit-flag process nil)) - (kill-buffer (current-buffer))))))) + (setq doom-popup-history (list (doom--popup-data window)))))) diff --git a/core/core-popups.el b/core/core-popups.el index 210e27fea..6cabc5152 100644 --- a/core/core-popups.el +++ b/core/core-popups.el @@ -149,6 +149,16 @@ recognized by DOOM's popup system. They are: (cons '(doom-display-buffer-condition doom-display-buffer-action) display-buffer-alist))) + (defun doom|autokill-popups () + (or (not (doom-popup-p)) + (prog1 (when (and (not doom-popup-inhibit-autokill) + (plist-get doom-popup-rules :autokill)) + (doom-popup-mode -1) + (when-let* ((process (get-buffer-process (current-buffer)))) + (set-process-query-on-exit-flag process nil)) + t)))) + (add-hook 'kill-buffer-query-functions #'doom|autokill-popups) + ;; no modeline in popups (add-hook 'doom-popup-mode-hook #'doom|hide-modeline-in-popup) ;; ensure every rule without an :align, :same or :frame property has an