Commit 066555eedbae
Changed files (2)
tools
emacs
tools/emacs/config/config-buffers.el
@@ -77,29 +77,29 @@
(unless (eq ibuffer-sorting-mode 'filename/process)
(ibuffer-do-sort-by-filename/process)))))
-(unless noninteractive
- (require 'popper)
- (setq popper-reference-buffers
- '("\\*Messages\\*"
- "Output\\*$"
- "\\*Async Shell Command\\*"
- "\\*Warnings\\*"
- "\\*Compile-Log\\*"
- help-mode
- helpful-mode
- compilation-mode
- flymake-diagnostics-buffer-mode
- flymake-project-diagnostics-mode
- Man-mode
- woman-mode))
- (global-set-key (kbd "C-`") 'popper-toggle)
- (global-set-key (kbd "M-`") 'popper-cycle)
- (global-set-key (kbd "C-M-`") 'popper-toggle-type)
- (popper-mode +1)
-
- ;; For echo-area hints
- (require 'popper-echo)
- (popper-echo-mode +1))
+;; (unless noninteractive
+;; (require 'popper)
+;; (setq popper-reference-buffers
+;; '("\\*Messages\\*"
+;; "Output\\*$"
+;; "\\*Async Shell Command\\*"
+;; "\\*Warnings\\*"
+;; "\\*Compile-Log\\*"
+;; help-mode
+;; helpful-mode
+;; compilation-mode
+;; flymake-diagnostics-buffer-mode
+;; flymake-project-diagnostics-mode
+;; Man-mode
+;; woman-mode))
+;; (global-set-key (kbd "C-`") 'popper-toggle)
+;; (global-set-key (kbd "M-`") 'popper-cycle)
+;; (global-set-key (kbd "C-M-`") 'popper-toggle-type)
+;; (popper-mode +1)
+;;
+;; ;; For echo-area hints
+;; (require 'popper-echo)
+;; (popper-echo-mode +1))
(use-package goto-addr
:hook ((text-mode . goto-address-mode)
tools/emacs/config/config-windows.el
@@ -168,60 +168,134 @@ use in `display-buffer-alist'."
(and (not (derived-mode-p 'message-mode 'text-mode))
(derived-mode-p 'eshell-mode 'shell-mode 'comint-mode 'fundamental-mode)))))
-(setq display-buffer-alist
- `(;; Default to no window
- ("\\`\\*Async Shell Command\\*\\'"
- (display-buffer-no-window))
- ("\\`\\*Warnings\\*\\'"
- (display-buffer-no-window)
- (allow-no-window . t))
- ("\\`\\*\\(Compile-Log\\|Org Links\\)\\*\\'"
- (display-buffer-no-window))
- ;; bottom side window
- ("\\*Org \\(Select\\|Note\\)\\*" ; the `org-capture' key selection and `org-add-log-note'
- (display-buffer-in-side-window)
- (dedicated . t)
- (side . bottom)
- (slot . 0)
- (window-parameters . ((mode-line-format . none))))
- ;; bottom buffer (NOT side window)
- ((or . ((derived-mode . flymake-diagnostics-buffer-mode)
- (derived-mode . flymake-project-diagnostics-mode)
- (derived-mode . messages-buffer-mode)
- (derived-mode . backtrace-mode)))
- (display-buffer-reuse-mode-window display-buffer-at-bottom)
- (window-height . 0.3)
- (dedicated . t)
- (preserve-size . (t . t)))
- ;; ((or . ((derived-mode . Man-mode)
- ;; (derived-mode . woman-mode)
- ;; "\\*\\(Man\\|woman\\).*"))
- ;; (display-buffer-reuse-mode-window display-buffer-below-selected)
- ;; (window-height . 0.3) ; note this is literal lines, not relative
- ;; (dedicated . t)
- ;; (preserve-size . (t . t)))
- ;; below current window
- ("\\(\\*Capture\\*\\|CAPTURE-.*\\)"
- (display-buffer-reuse-mode-window display-buffer-below-selected))
- ((derived-mode . reb-mode) ; M-x re-builder
- (display-buffer-reuse-mode-window display-buffer-below-selected)
- (window-height . 4) ; note this is literal lines, not relative
- (dedicated . t)
- (preserve-size . (t . t)))
- ((or . ((derived-mode . occur-mode)
- (derived-mode . grep-mode)
- (derived-mode . Buffer-menu-mode)
- (derived-mode . log-view-mode)
- (derived-mode . helpful-mode)
- (derived-mode . help-mode) ; See the hooks for `visual-line-mode'
- "\\*\\(|Buffer List\\|Occur\\|vc-change-log\\).*"
- prot-window-shell-or-term-p
- ,world-clock-buffer-name))
- (prot-window-display-buffer-below-or-pop)
- (dedicated . t)
- (body-function . prot-window-select-fit-size))
- ))
+;; (setq display-buffer-alist
+;; `(;; Default to no window
+;; ("\\`\\*Async Shell Command\\*\\'"
+;; (display-buffer-no-window))
+;; ("\\`\\*Warnings\\*\\'"
+;; (display-buffer-no-window)
+;; (allow-no-window . t))
+;; ("\\`\\*\\(Compile-Log\\|Org Links\\)\\*\\'"
+;; (display-buffer-no-window))
+;; ;; bottom side window
+;; ("\\*Org \\(Select\\|Note\\)\\*" ; the `org-capture' key selection and `org-add-log-note'
+;; (display-buffer-in-side-window)
+;; (dedicated . t)
+;; (side . bottom)
+;; (slot . 0)
+;; (window-parameters . ((mode-line-format . none))))
+;; ;; bottom buffer (NOT side window)
+;; ((or . ((derived-mode . flymake-diagnostics-buffer-mode)
+;; (derived-mode . flymake-project-diagnostics-mode)
+;; (derived-mode . messages-buffer-mode)
+;; (derived-mode . backtrace-mode)))
+;; (display-buffer-reuse-mode-window display-buffer-at-bottom)
+;; (window-height . 0.3)
+;; (dedicated . t)
+;; (preserve-size . (t . t)))
+;; ;; ((or . ((derived-mode . Man-mode)
+;; ;; (derived-mode . woman-mode)
+;; ;; "\\*\\(Man\\|woman\\).*"))
+;; ;; (display-buffer-reuse-mode-window display-buffer-below-selected)
+;; ;; (window-height . 0.3) ; note this is literal lines, not relative
+;; ;; (dedicated . t)
+;; ;; (preserve-size . (t . t)))
+;; ;; below current window
+;; ("\\(\\*Capture\\*\\|CAPTURE-.*\\)"
+;; (display-buffer-reuse-mode-window display-buffer-below-selected))
+;; ((derived-mode . reb-mode) ; M-x re-builder
+;; (display-buffer-reuse-mode-window display-buffer-below-selected)
+;; (window-height . 4) ; note this is literal lines, not relative
+;; (dedicated . t)
+;; (preserve-size . (t . t)))
+;; ((or . ((derived-mode . occur-mode)
+;; (derived-mode . grep-mode)
+;; (derived-mode . Buffer-menu-mode)
+;; (derived-mode . log-view-mode)
+;; (derived-mode . helpful-mode)
+;; (derived-mode . help-mode) ; See the hooks for `visual-line-mode'
+;; "\\*\\(|Buffer List\\|Occur\\|vc-change-log\\).*"
+;; prot-window-shell-or-term-p
+;; ,world-clock-buffer-name))
+;; (prot-window-display-buffer-below-or-pop)
+;; (dedicated . t)
+;; (body-function . prot-window-select-fit-size))
+;; ))
+(use-package auto-side-windows
+ :custom
+ ;; Top side window configurations
+ (auto-side-windows-top-buffer-names
+ '("^\\*Backtrace\\*$" "^\\*Compile-Log\\*$" "^COMMIT_EDITMSG$"
+ "^\\*Org Src.*\\*" "^\\*Agenda Commands\\*$" "^\\*Org Agenda\\*$"
+ "^\\*Quick Help\\*$" "^\\*Multiple Choice Help\\*$" "^\\*TeX Help\\*$"
+ "^\\*TeX errors\\*$" "^\\*Warnings\\*$" "^\\*diff-hl\\*$"
+ "^\\*Process List\\*$"))
+ (auto-side-windows-top-buffer-modes
+ '(flymake-diagnostics-buffer-mode locate-mode occur-mode grep-mode
+ xref--xref-buffer-mode))
+
+ ;; Bottom side window configurations
+ (auto-side-windows-bottom-buffer-names
+ '("^\\*.*eshell.*\\*$" "^\\*.*shell.*\\*$" "^\\*.*term.*\\*$"
+ "^\\*.*vterm.*\\*$"))
+ (auto-side-windows-bottom-buffer-modes
+ '(eshell-mode shell-mode term-mode vterm-mode comint-mode debugger-mode))
+
+ ;; Right side window configurations
+ (auto-side-windows-right-buffer-names
+ '("^\\*eldoc.*\\*$" "^\\*info\\*$" "^\\*Metahelp\\*$"))
+ (auto-side-windows-right-buffer-modes
+ '(Info-mode TeX-output-mode pdf-view-mode eldoc-mode help-mode
+ helpful-mode shortdoc-mode))
+
+ ;; Example: Custom parameters for top windows (e.g., fit height to buffer)
+ ;; (auto-side-windows-top-alist '((window-height . fit-window-to-buffer)))
+ ;; (auto-side-windows-top-window-parameters '((mode-line-format . ...))) ;; Adjust mode-line
+
+ ;; Maximum number of side windows on the left, top, right and bottom
+ (window-sides-slots '(1 1 1 1)) ; Example: Allow one window per side
+
+ ;; Force left and right side windows to occupy full frame height
+ (window-sides-vertical t)
+ (window-combination-resize t)
+
+ ;; Make changes to tab-/header- and mode-line-format persistent when toggleling windows visibility
+ (window-persistent-parameters
+ (append window-persistent-parameters
+ '((tab-line-format . t)
+ (header-line-format . t)
+ (mode-line-format . t))))
+ :bind ;; Example keybindings (adjust prefix as needed)
+ (:map global-map ; Or your preferred keymap prefix
+ ("C-c w t" . auto-side-windows-display-buffer-top)
+ ("C-c w b" . auto-side-windows-display-buffer-bottom)
+ ("C-c w l" . auto-side-windows-display-buffer-left)
+ ("C-c w r" . auto-side-windows-display-buffer-right)
+ ("C-c w T" . auto-side-windows-toggle-side-window)) ; Toggle current buffer in/out of side window
+ :hook
+ (after-init . auto-side-windows-mode)) ; Activate the mode
+
+(use-package popper
+ :after auto-side-windows ; Ensure auto-side-windows variables are defined
+ :hook (auto-side-windows-mode . popper-mode) ; Activate popper alongside
+ :custom
+ ;; Tell Popper to consider buffers matching auto-side-windows rules as popups
+ (popper-reference-buffers
+ (append auto-side-windows-top-buffer-names auto-side-windows-top-buffer-modes
+ auto-side-windows-left-buffer-names auto-side-windows-left-buffer-modes
+ auto-side-windows-right-buffer-names auto-side-windows-right-buffer-modes
+ auto-side-windows-bottom-buffer-names auto-side-windows-bottom-buffer-modes))
+ ;; Optional: Don't let Popper decide where to display, auto-side-windows handles that
+ (popper-display-control nil) ; Or 'user if you prefer popper commands for display
+ :config
+ (require 'popper-echo)
+ (popper-mode +1) ; Enable popper-mode
+ (popper-echo-mode +1) ; Optional: echo area notifications
+ :bind
+ (("C-`" . popper-toggle)
+ ("C-M-`" . popper-toggle-type)
+ ("M-`" . popper-cycle)))
;; TODO: Move display-buffer-alist here
(provide 'config-windows)