@@ 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")
"<TAB>" '(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))