;; -*- lexical-binding: t; -*- ;; Window-related configuration ;; winum-mode allows selecting windows by number (use-package winum :config (winum-mode) :custom (winum-scope 'frame-local)) ;; winner-mode lets you undo and redo changes to the window layout (winner-mode 1) ;; Keybindings (leader-def-key "0" #'winum-select-window-0-or-10 "1" #'winum-select-window-1 "2" #'winum-select-window-2 "3" #'winum-select-window-3 "4" #'winum-select-window-4 "5" #'winum-select-window-5 "6" #'winum-select-window-6 "7" #'winum-select-window-7 "8" #'winum-select-window-8 "9" #'winum-select-window-9 "w" '(evil-window-map :which-key "window")) (general-def evil-window-map "m" #'delete-other-windows "S" #'split-root-window-below "V" #'split-root-window-right "u" #'winner-undo "C-r" #'winner-redo) ;; Condense the which-key display for window selection bindings (with-eval-after-load 'which-key (push '(("\\(.*\\) 0" . "select-window-0") . ("\\1 0..9" . "window 0..9")) which-key-replacement-alist) (push '((nil . "select-window-[1-9]") . t) which-key-replacement-alist)) ;; Buffer and window layout management (setopt switch-to-buffer-in-dedicated-window 'pop split-height-threshold 116 window-sides-slots '(1 0 0 1) display-buffer-alist '(("\\*Help\\*" (display-buffer-reuse-window display-buffer-in-side-window) (side . right) (slot . 0) (window-width . 85)) ("\\*helpful .*\\*" (display-buffer-reuse-mode-window display-buffer-in-side-window) (side . right) (slot . 0) (window-width . 85)) ("\\*eldoc\\*" (display-buffer-reuse-window display-buffer-in-side-window) (side . right) (slot . 0) (window-width . 85)) ("\\*vterm.*\\*" (display-buffer-reuse-mode-window display-buffer-pop-up-window) (mode vterm-mode vterm-copy-mode)) ("\\*ielm\\*" (display-buffer-reuse-mode-window display-buffer-pop-up-window) (mode vterm-mode vterm-copy-mode)) ("\\*Messages\\*" display-buffer-no-window (allow-no-window . t)) ("\\*Warnings\\*" display-buffer-no-window (allow-no-window . t)) ("\\*info\\*" (display-buffer-reuse-window display-buffer-pop-up-window)))) (provide 'init-windows)