Add +popup-display-buffer-fullframe

Adds support for the saved-wconf window parameter. If a popup possesses
a window configuration in this parameter, it will be restored when the
popup (or its popup buffer) is killed.
This commit is contained in:
Henrik Lissner 2018-06-25 19:28:09 +02:00
parent 8a4f15b01c
commit 8fcc12ed08
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -70,7 +70,9 @@ and enables `+popup-buffer-mode'."
(funcall autosave buffer))))
(with-current-buffer buffer (save-buffer)))
(let ((ignore-window-parameters t))
(delete-window window))
(if-let* ((wconf (window-parameter window 'saved-wconf)))
(set-window-configuration wconf)
(delete-window window)))
(unless (window-live-p window)
(with-current-buffer buffer
(set-buffer-modified-p nil)
@ -376,6 +378,19 @@ the message buffer in a popup window."
prevent the popup(s) from messing up the UI (or vice versa)."
(save-popups! (apply orig-fn args)))
;;;###autoload
(defun +popup-display-buffer-fullframe (buffer alist)
"Displays the buffer fullscreen."
(let ((wconf (current-window-configuration)))
(when-let (window (or (display-buffer-reuse-window buffer alist)
(display-buffer-same-window buffer alist)
(display-buffer-pop-up-window buffer alist)
(display-buffer-use-some-window buffer alist)))
(set-window-parameter window 'saved-wconf wconf)
(add-to-list 'window-persistent-parameters '(saved-wconf . t))
(delete-other-windows window)
window)))
;;;###autoload
(defun +popup-display-buffer-stacked-side-window (buffer alist)
"A `display-buffer' action that serves as an alternative to