init-window.el (5052B)
1 ;;; init-window.el --- windows manage packages -*- lexical-binding: t -*- 2 3 ;;; Commentary: 4 5 ;;; Code: 6 7 (use-package window 8 :straight nil 9 :config 10 (setq switch-to-buffer-obey-display-actions t)) 11 12 (use-package popper 13 :defines 14 popper-echo-dispatch-actions 15 :commands 16 popper-group-by-directory 17 :hook 18 (after-init . popper-mode) 19 20 :init 21 (setq popper-reference-buffers 22 '("\\*Messages\\*" 23 "Output\\*$" "\\*Pp Eval Output\\*$" 24 "\\*Compile-Log\\*" 25 "\\*Completions\\*" 26 "\\*Warnings\\*" 27 "\\*Flymake diagnostics.*\\*" 28 "\\*Async Shell Command\\*" 29 "\\*Apropos\\*" 30 "\\*Backtrace\\*" 31 "\\*prodigy\\*" 32 "\\*Calendar\\*" 33 "\\*Holidays\\*" 34 "\\*Embark Actions\\*" 35 "\\*Finder\\*" 36 "\\*Kill Ring\\*" 37 "\\*Embark Export:.*\\*" 38 "\\*Edit Annotation.*\\*" 39 "\\*Flutter\\*" 40 "\\*Ibuffer\\*" 41 "^\\*Finder-" 42 "Buffers\\*$" 43 "^\\*Geiser" 44 "^\\*pi-coding-agent-input" 45 "^\\*sly" 46 "\\*discomfort\\*" 47 "\\*Synonyms List\\*" 48 bookmark-bmenu-mode 49 lsp-bridge-ref-mode 50 comint-mode 51 compilation-mode 52 help-mode helpful-mode 53 tabulated-list-mode 54 buffer-menu-mode 55 occur-mode 56 gnus-article-mode devdocs-mode 57 grep-mode occur-mode rg-mode deadgrep-mode ag-mode pt-mode 58 ivy-occur-mode ivy-occur-grep-mode 59 process-menu-mode list-environment-mode cargo-process-mode 60 youdao-dictionary-mode osx-dictionary-mode fanyi-mode 61 ibuffer-mode 62 63 "^\\*eshell.*\\*.*$" eshell-mode 64 ".*eshell\\*$" 65 "^\\*shell.*\\*.*$" shell-mode 66 "^\\*terminal.*\\*.*$" term-mode 67 "^\\*vterm.*\\*.*$" vterm-mode 68 "^\\*ghostel.*\\*.*$" ghostel-mode 69 70 "\\*DAP Templates\\*$" dap-server-log-mode 71 "\\*ELP Profiling Restuls\\*" profiler-report-mode 72 "\\*Flycheck errors\\*$" " \\*Flycheck checker\\*$" 73 "\\*Paradox Report\\*$" "\\*package update results\\*$" "\\*Package-Lint\\*$" 74 "\\*ert\\*$" overseer-buffer-mode 75 "\\*gud-debug\\*$" 76 "\\*lsp-help\\*$" "\\*lsp session\\*$" 77 "\\*quickrun\\*$" 78 "\\*tldr\\*$" 79 "\\*eldoc\\*" 80 ;; "^\\*elfeed-entry\\*$" 81 "^\\*macro expansion\\**" 82 "\\*gt-result\\*" 83 84 "\\*Agenda Commands\\*" "\\*Org Select\\*" "\\*Capture\\*" "^CAPTURE-.*\\.org*" "^CAPTURE-" "\\*Org Note\\*" 85 "\\*Gofmt Errors\\*$" "\\*Go Test\\*$" godoc-mode 86 "\\*docker-containers\\*" "\\*docker-images\\*" "\\*docker-networks\\*" "\\*docker-volumes\\*" 87 "\\*prolog\\*" inferior-python-mode inf-ruby-mode swift-repl-mode 88 "\\*rustfmt\\*$" rustic-compilation-mode rustic-cargo-clippy-mode 89 rustic-cargo-outdated-mode rustic-cargo-test-mode 90 91 "^\\*\\[D\\] FILE backlinks for" "^\\*Denote HEADING backlinks for")) 92 93 (when (display-grayscale-p) 94 (setq popper-mode-line 95 '("[POP]"))) 96 (setq popper-echo-dispatch-actions t) 97 (setq popper-group-function nil) 98 99 :config 100 (popper-echo-mode 1) 101 102 (with-no-warnings 103 (defun my-popper-fit-window-height (win) 104 "Determine the height of popup window WIN by fitting it to the buffer's content." 105 (fit-window-to-buffer 106 win 107 (floor (frame-height) 3) 108 (floor (frame-height) 3))) 109 (setq popper-window-height #'my-popper-fit-window-height) 110 111 (defun my-popper-clear-sides-shown (&optional buffer) 112 "Clear `window--sides-shown'." 113 (with-current-buffer (get-buffer (or buffer (current-buffer))) 114 (kill-local-variable 'window--sides-shown))) 115 (advice-add #'popper-raise-popup :after #'my-popper-clear-sides-shown) 116 117 (defun popper-toggle-type-delete-other-window() 118 "Toggle type of popper window and delete other window." 119 (interactive) 120 (popper-toggle-type) 121 (delete-other-windows)) 122 123 (defun popper-close-window-hack (&rest _args) 124 "Close popper window via `C-g'." 125 (when (and (called-interactively-p 'interactive) 126 (not (region-active-p)) 127 popper-open-popup-alist) 128 (let ((window (caar popper-open-popup-alist)) 129 (buffer (cdar popper-open-popup-alist))) 130 (when (and (window-live-p window) 131 (buffer-live-p buffer) 132 (not (with-current-buffer buffer 133 (derived-mode-p 'eshell-mode 134 'ghostel-mode 135 'shell-mode 136 'term-mode)))) 137 (delete-window window))))) 138 (advice-add #'keyboard-quit :before #'popper-close-window-hack))) 139 140 ;; windmove 141 (use-package windmove 142 :straight nil 143 :hook 144 (after-init . windmove-swap-states-default-keybindings)) 145 146 (provide 'init-window) 147 ;;; init-window.el ends here