mirror of
https://github.com/doomemacs/doomemacs
synced 2025-08-01 12:17:25 -05:00
Preserve window state when toggling popups
e.g. size
This commit is contained in:
@ -97,6 +97,12 @@ and enables `+popup-buffer-mode'."
|
||||
(defun +popup--normalize-alist (alist)
|
||||
"Merge `+popup-default-alist' and `+popup-default-parameters' with ALIST."
|
||||
(when alist
|
||||
;; In case ALIST is window state (from `window-state-get'), we map its
|
||||
;; entries to display-buffer alist parameters.
|
||||
(dolist (prop +popup-window-state-alist)
|
||||
(when-let* ((val (assq (car prop) alist)))
|
||||
(setf (alist-get (cdr prop) alist) (cdr val))
|
||||
(setq alist (delq val alist))))
|
||||
(let ((alist ; handle defaults
|
||||
(cl-remove-duplicates
|
||||
(append alist +popup-default-alist)
|
||||
@ -359,9 +365,8 @@ the message buffer in a popup window."
|
||||
(unless +popup--last
|
||||
(error "No popups to restore"))
|
||||
(cl-loop for (buffer . state) in +popup--last
|
||||
if (and (buffer-live-p buffer)
|
||||
(display-buffer buffer))
|
||||
do (window-state-put state it))
|
||||
if (buffer-live-p buffer)
|
||||
do (+popup-buffer buffer state))
|
||||
(setq +popup--last nil)
|
||||
t)
|
||||
|
||||
|
@ -20,6 +20,13 @@ Modifying this has no effect, unless done before ui/popup loads.")
|
||||
(no-other-window . t))
|
||||
"The default window parameters.")
|
||||
|
||||
(defvar +popup-window-state-alist
|
||||
'((total-width . window-width)
|
||||
(total-height . window-height)
|
||||
(parameters . window-parameters))
|
||||
"An alist mapping `window-state-get' entries to display-buffer alist entries.
|
||||
Used by `+popup--normalize-alist'.")
|
||||
|
||||
(defvar +popup-margin-width 1
|
||||
"Size of the margins to give popup windows. Set this to nil to disable margin
|
||||
adjustment.")
|
||||
|
Reference in New Issue
Block a user