feature/popup: add +popup-display-buffer-actions #337
Gives us more flexibility to control what display-buffer functions to use when trying to display the popup window.
This commit is contained in:
parent
228b3a36e5
commit
7bdf8cf8d9
2 changed files with 16 additions and 11 deletions
|
@ -43,6 +43,7 @@ and enables `+popup-buffer-mode'."
|
||||||
(set-window-parameter window 'popup t)
|
(set-window-parameter window 'popup t)
|
||||||
(set-window-parameter window 'no-other-window t)
|
(set-window-parameter window 'no-other-window t)
|
||||||
(set-window-parameter window 'delete-window #'+popup--destroy)
|
(set-window-parameter window 'delete-window #'+popup--destroy)
|
||||||
|
(set-window-dedicated-p window 'popup)
|
||||||
(+popup-buffer-mode +1)
|
(+popup-buffer-mode +1)
|
||||||
(run-hooks '+popup-create-window-hook)))
|
(run-hooks '+popup-create-window-hook)))
|
||||||
|
|
||||||
|
@ -122,17 +123,17 @@ and enables `+popup-buffer-mode'."
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun +popup-buffer (buffer &optional alist)
|
(defun +popup-buffer (buffer &optional alist)
|
||||||
"Open BUFFER in a popup window. ALIST describes its features."
|
"Open BUFFER in a popup window. ALIST describes its features."
|
||||||
(let* ((old-window (selected-window))
|
(let ((old-window (selected-window))
|
||||||
(alist (+popup--normalize-alist alist))
|
(alist (+popup--normalize-alist alist))
|
||||||
(new-window (let ((window-min-height 3))
|
(window-min-height 3))
|
||||||
(or (display-buffer-reuse-window buffer alist)
|
(when-let* ((new-window (run-hook-with-args-until-success
|
||||||
(display-buffer-in-side-window buffer alist)))))
|
'+popup-display-buffer-actions buffer alist)))
|
||||||
(+popup--init new-window alist)
|
(+popup--init new-window alist)
|
||||||
(let ((select (+popup-parameter 'select new-window)))
|
(let ((select (+popup-parameter 'select new-window)))
|
||||||
(if (functionp select)
|
(if (functionp select)
|
||||||
(funcall select new-window old-window)
|
(funcall select new-window old-window)
|
||||||
(select-window (if select new-window old-window))))
|
(select-window (if select new-window old-window))))
|
||||||
new-window))
|
new-window)))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun +popup-parameter (parameter &optional window)
|
(defun +popup-parameter (parameter &optional window)
|
||||||
|
|
|
@ -66,6 +66,10 @@ a brief description of some native window parameters that Emacs uses:
|
||||||
If CDR is non-nil, this window becomes invisible to `other-window' and
|
If CDR is non-nil, this window becomes invisible to `other-window' and
|
||||||
`pop-to-buffer'. Doom popups sets this. The default is nil.")
|
`pop-to-buffer'. Doom popups sets this. The default is nil.")
|
||||||
|
|
||||||
|
(defvar +popup-display-buffer-actions
|
||||||
|
'(display-buffer-reuse-window display-buffer-in-side-window)
|
||||||
|
"The functions to use to display the popup buffer.")
|
||||||
|
|
||||||
(defvar +popup-default-alist
|
(defvar +popup-default-alist
|
||||||
'((window-height . 0.16)
|
'((window-height . 0.16)
|
||||||
(reusable-frames . visible))
|
(reusable-frames . visible))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue