Fix maximize/enlargen commands around dedicated windows #2337

This commit is contained in:
Henrik Lissner 2020-01-09 19:31:47 -05:00
parent 9c594d3f42
commit 59a6cb72be
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -103,6 +103,7 @@ See `display-line-numbers' for what these values mean."
(delete-frame)) (delete-frame))
(save-buffers-kill-emacs))) (save-buffers-kill-emacs)))
(defvar doom--maximize-last-wconf nil)
;;;###autoload ;;;###autoload
(defun doom/window-maximize-buffer () (defun doom/window-maximize-buffer ()
"Close other windows to focus on this one. Activate again to undo this. If the "Close other windows to focus on this one. Activate again to undo this. If the
@ -110,41 +111,40 @@ window changes before then, the undo expires.
Alternatively, use `doom/window-enlargen'." Alternatively, use `doom/window-enlargen'."
(interactive) (interactive)
(if (and (one-window-p) (setq doom--maximize-last-wconf
(assq ?_ register-alist)) (if (and (null (cdr (cl-remove-if #'window-dedicated-p (window-list))))
(jump-to-register ?_) doom--maximize-last-wconf)
(when (and (bound-and-true-p +popup-mode) (ignore (set-window-configuration doom--maximize-last-wconf))
(+popup-window-p)) (when (and (bound-and-true-p +popup-mode)
(user-error "Cannot maximize a popup, use `+popup/raise' first or use `doom/window-enlargen' instead")) (+popup-window-p))
(window-configuration-to-register ?_) (user-error "Cannot maximize a popup, use `+popup/raise' first or use `doom/window-enlargen' instead"))
(delete-other-windows))) (prog1 (current-window-configuration)
(delete-other-windows)))))
(defvar doom--window-enlargened nil) (defvar doom--enlargen-last-wconf nil)
;;;###autoload ;;;###autoload
(defun doom/window-enlargen () (defun doom/window-enlargen ()
"Enlargen the current window to focus on this one. Does not close other "Enlargen the current window to focus on this one. Does not close other
windows (unlike `doom/window-maximize-buffer') Activate again to undo." windows (unlike `doom/window-maximize-buffer'). Activate again to undo."
(interactive) (interactive)
(setq doom--window-enlargened (setq doom--enlargen-last-wconf
(if (and doom--window-enlargened (if doom--enlargen-last-wconf
(assq ?_ register-alist)) (ignore (set-window-configuration doom--enlargen-last-wconf))
(ignore (ignore-errors (jump-to-register ?_))) (prog1 (current-window-configuration)
(window-configuration-to-register ?_) (let* ((window (selected-window))
(let* ((window (selected-window)) (dedicated-p (window-dedicated-p window))
(dedicated-p (window-dedicated-p window)) (preserved-p (window-parameter window 'window-preserved-size))
(preserved-p (window-parameter window 'window-preserved-size)) (ignore-window-parameters t))
(ignore-window-parameters t)) (unwind-protect
(unwind-protect (progn
(progn (when dedicated-p
(when dedicated-p (set-window-dedicated-p window nil))
(set-window-dedicated-p window nil)) (when preserved-p
(when preserved-p (set-window-parameter window 'window-preserved-size nil))
(set-window-parameter window 'window-preserved-size nil)) (maximize-window window))
(maximize-window window)) (set-window-dedicated-p window dedicated-p)
(set-window-dedicated-p window dedicated-p) (when preserved-p
(when preserved-p (set-window-parameter window 'window-preserved-size preserved-p))))))))
(set-window-parameter window 'window-preserved-size preserved-p)))
t))))
;;;###autoload ;;;###autoload
(defun doom/window-maximize-horizontally () (defun doom/window-maximize-horizontally ()