From ed6941e8ae13c953962f10d2a7e79b5ac8fe44b7 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 12 May 2017 12:11:40 +0200 Subject: [PATCH] core-popups: clone buffer if visible elsewhere Allows us to modify the buffer in the pop up window indepdently from the rest. --- core/autoload/popups.el | 3 ++- core/core-popups.el | 6 +++++- modules/ui/doom/config.el | 3 +-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/core/autoload/popups.el b/core/autoload/popups.el index 428a3c02c..23742d568 100644 --- a/core/autoload/popups.el +++ b/core/autoload/popups.el @@ -114,7 +114,8 @@ only close popups that have an :autoclose property in their rule (see ;;;###autoload (defun doom/popup () "Display currently selected buffer in a popup window." - (doom-popup-buffer (current-buffer) :align t)) + (interactive) + (doom-popup-buffer (current-buffer) :align t :autokill t)) (defun doom--popup-data (window) (let ((buffer (window-buffer window))) diff --git a/core/core-popups.el b/core/core-popups.el index 4c87bca84..c96209d97 100644 --- a/core/core-popups.el +++ b/core/core-popups.el @@ -192,7 +192,11 @@ and setting `doom-popup-rules' within it. Returns the window." (shackle-match (window-buffer (car args)))) ((bufferp (car args)) (shackle-match (car args)))))) - (window (apply orig-fn args))) + window) + (when (get-buffer-window-list (car args) nil t) + (setq plist (append (list :autokill t) plist)) + (setcar args (clone-indirect-buffer (buffer-name (car args)) nil t))) + (setq window (apply orig-fn args)) (unless window (error "No popup window was found for %s: %s" (car args) plist)) (with-selected-window window diff --git a/modules/ui/doom/config.el b/modules/ui/doom/config.el index 83634ebab..7653e1a07 100644 --- a/modules/ui/doom/config.el +++ b/modules/ui/doom/config.el @@ -74,8 +74,7 @@ (defun +doom|buffer-mode-off () "Disable `doom-buffer-mode' in popup buffers." - (when (and doom-buffer-mode - (not (get-buffer-window-list))) + (when doom-buffer-mode (doom-buffer-mode -1))) (add-hook 'doom-popup-mode-hook #'+doom|buffer-mode-off)