~ruther/emacs.d

93dbc3e4a01a043d9db0a3fd785ea26ee7831bbe — Rutherther 3 months ago 4a8f320
feat: exclude popper window from resizes
1 files changed, 27 insertions(+), 2 deletions(-)

M init.el
M init.el => init.el +27 -2
@@ 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))