From 93dbc3e4a01a043d9db0a3fd785ea26ee7831bbe Mon Sep 17 00:00:00 2001 From: Rutherther Date: Sat, 31 Jan 2026 22:19:19 +0100 Subject: [PATCH] feat: exclude popper window from resizes --- init.el | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/init.el b/init.el index b89849c3a4bb7d624b4d77851a1f3446ec7e3ce6..fef720ce4c6aea9c7dc3156812a5d4dba40223bc 100644 --- a/init.el +++ b/init.el @@ -545,6 +545,15 @@ (select-window (active-minibuffer-window)) (error "Minibuffer is not active")))) +(defun my/shrink-popper-popup (&optional height) + "Shrink the popper popup window by DELTA lines (default 5)." + (interactive "P") + (let ((height (or height 12))) + (when-let ((popup-win (cl-find-if (lambda (win) + (popper-popup-p (window-buffer win))) + (window-list)))) + (window-resize popup-win (- height (window-height popup-win)))))) + (my-use-package popper :ensure t :demand t @@ -558,7 +567,8 @@ "k k" '(popper-toggle :wk "Popper toggle") "k t" '(popper-toggle-type :wk "Popper toggle popup") "k j" '(popper-cycle :wk "Popper cycle") - "k J" '(popper-cycle-backwards :wk "Popper cycle backwards")) + "k J" '(popper-cycle-backwards :wk "Popper cycle backwards") + "k -" '(my/shrink-popper-popup :wk "Shrink poopper")) :custom (popper-mode-line '(:eval (propertize " POP " 'face 'mode-line-emphasis))) (popper-echo-dispatch-keys '(?q ?w ?e ?r ?t ?y ?u ?i ?o ?p)) @@ -581,6 +591,20 @@ (popper-mode 1) (popper-echo-mode 1)) +(defun my/balance-windows-except-popup () + "Balance windows, excluding popper popup windows." + (interactive) + (let ((popup-win (cl-find-if (lambda (win) + (popper-popup-p (window-buffer win))) + (window-list)))) + (if popup-win + (let ((popup-height (window-height popup-win))) + (balance-windows) + ;; Restore popup height after balancing + (when (window-live-p popup-win) + (window-resize popup-win (- popup-height (window-height popup-win))))) + (balance-windows)))) + (my-use-package ace-window :ensure t :commands (aw-select ace-window ace-window-one-command) @@ -591,7 +615,8 @@ "O" '(ace-window-prefix :wk "Ace window prefix") "`" '(evil-switch-to-windows-last-buffer :wk "Switch to last buffer") "" '(evil-switch-to-windows-last-buffer :wk "Switch to last buffer") - "w" '(:keymap evil-window-map :wk "Windows")) + "w" '(:keymap evil-window-map :wk "Windows") + "w =" 'my/balance-windows-except-popup) :bind (("M-o" . ace-window) ("M-C-o". ace-window-one-command))