Files
.emacs.d/lisp/init-window.el

149 lines
5.4 KiB
EmacsLisp
Raw Normal View History

2025-12-22 10:51:46 +11:00
;; -*- lexical-binding: t; -*-
;; Restore old window configurations
(use-package winner
:ensure nil
:commands (winner-undo winner-redo)
:hook elpaca-after-init
:init (setq winner-boring-buffers '("*Completions*"
"*Compile-Log*"
"*inferior-lisp*"
"*Fuzzy Completions*"
"*Apropos*"
"*Help*"
"*cvs*"
"*Buffer List*"
"*Ibuffer*"
"*esh command on file*")))
(use-package ace-window
:hook (emacs-startup . ace-window-display-mode)
:bind (([remap other-window] . ace-window)
("C-c C-w" . ace-window-hydra/body))
:pretty-hydra
2025-12-22 12:49:49 +11:00
(("Actions"
2025-12-22 10:51:46 +11:00
(("TAB" other-window "switch")
("x" ace-delete-window "delete")
("X" ace-delete-other-windows "delete other" :exit t)
("s" ace-swap-window "swap")
("a" ace-select-window "select" :exit t)
("m" toggle-frame-maximized "maximize" :exit t)
("u" toggle-frame-fullscreen "fullscreen" :exit t))
"Resize"
(("h" shrink-window-horizontally "")
("j" enlarge-window "")
("k" shrink-window "")
("l" enlarge-window-horizontally "")
("n" balance-windows "balance"))
"Split"
(("r" split-window-right "horizontally")
("v" split-window-below "vertically")
("t" toggle-window-split "toggle"))
"Zoom"
(("+" text-scale-increase "in")
("=" text-scale-increase "in")
("-" text-scale-decrease "out")
("0" (text-scale-increase 0) "reset"))
"Misc"
(("o" set-frame-font "frame font")
("f" make-frame-command "new frame")
("d" delete-frame "delete frame")
("<left>" winner-undo "winner undo")
("<right>" winner-redo "winner redo")))))
2025-12-22 12:38:36 +11:00
(use-package popper
:custom
(popper-group-function #'popper-group-by-directory)
(popper-echo-dispatch-actions t)
2025-12-22 12:46:12 +11:00
:bind (:map popper-mode-map
2025-12-22 12:38:36 +11:00
("C-h z" . popper-toggle)
("C-<tab>" . popper-cycle)
("C-M-<tab>" . popper-toggle-type))
:hook (emacs-startup . popper-echo-mode)
:init
(setq popper-mode-line ""
popper-reference-buffers
'("\\*Messages\\*$"
"Output\\*$" "\\*Pp Eval Output\\*$"
"^\\*eldoc.*\\*$"
"\\*Compile-Log\\*$"
"\\*Completions\\*$"
"\\*Warnings\\*$"
"\\*Async Shell Command\\*$"
"\\*Apropos\\*$"
"\\*Backtrace\\*$"
"\\*Calendar\\*$"
"\\*Fd\\*$" "\\*Find\\*$" "\\*Finder\\*$"
"\\*Kill Ring\\*$"
"\\*Embark \\(Collect\\|Live\\):.*\\*$"
bookmark-bmenu-mode
comint-mode
compilation-mode
help-mode helpful-mode
tabulated-list-mode
Buffer-menu-mode
flymake-diagnostics-buffer-mode
gnus-article-mode devdocs-mode
grep-mode occur-mode rg-mode
osx-dictionary-mode fanyi-mode
"^\\*gt-result\\*$" "^\\*gt-log\\*$"
"^\\*Process List\\*$" process-menu-mode
list-environment-mode cargo-process-mode
"^\\*.*eat.*\\*.*$"
"^\\*.*eshell.*\\*.*$"
"^\\*.*shell.*\\*.*$"
"^\\*.*terminal.*\\*.*$"
"^\\*.*vterm[inal]*.*\\*.*$"
"\\*DAP Templates\\*$" dap-server-log-mode
"\\*ELP Profiling Restuls\\*" profiler-report-mode
"\\*package update results\\*$" "\\*Package-Lint\\*$"
"\\*[Wo]*Man.*\\*$"
"\\*ert\\*$" overseer-buffer-mode
"\\*gud-debug\\*$"
"\\*lsp-help\\*$" "\\*lsp session\\*$"
"\\*quickrun\\*$"
"\\*tldr\\*$"
"\\*vc-.*\\**"
"\\*diff-hl\\**"
"^\\*macro expansion\\**"
"\\*Agenda Commands\\*" "\\*Org Select\\*" "\\*Capture\\*" "^CAPTURE-.*\\.org*"
"\\*Gofmt Errors\\*$" "\\*Go Test\\*$" godoc-mode
"\\*docker-.+\\*"
"\\*prolog\\*" inferior-python-mode inf-ruby-mode swift-repl-mode
"\\*rustfmt\\*$" rustic-compilation-mode rustic-cargo-clippy-mode
rustic-cargo-outdated-mode rustic-cargo-run-mode rustic-cargo-test-mode))
:config
(with-no-warnings
(defun my-popper-fit-window-height (win)
"Adjust the height of popup window WIN to fit the buffer's content."
(let ((desired-height (floor (/ (frame-height) 3))))
(fit-window-to-buffer win desired-height desired-height)))
(setq popper-window-height #'my-popper-fit-window-height)
(defun popper-close-window-hack (&rest _args)
"Close popper window via `C-g'."
(when (and ; (called-interactively-p 'interactive)
(not (region-active-p))
popper-open-popup-alist)
(let ((window (caar popper-open-popup-alist))
(buffer (cdar popper-open-popup-alist)))
(when (and (window-live-p window)
(buffer-live-p buffer)
(not (with-current-buffer buffer
(derived-mode-p 'eshell-mode
'shell-mode
'term-mode
'vterm-mode))))
(delete-window window)))))
(advice-add #'keyboard-quit :before #'popper-close-window-hack)))
2025-12-22 10:51:46 +11:00
(provide 'init-window)
2025-12-22 12:38:36 +11:00
;;; init-window.el ends here