diff options
| author | bard <[email protected]> | 2024-03-15 21:25:43 -0400 |
|---|---|---|
| committer | bard <[email protected]> | 2024-03-15 21:25:43 -0400 |
| commit | 5009c15a3067c32a26bc467d01a4a2575d88228c (patch) | |
| tree | cd94f244ffa414398f958d876bf08f9cec383d8b | |
| parent | 73f10251d509b8c482dd3cc45d423c6a0501e072 (diff) | |
window configuration
| -rw-r--r-- | bard-elisp/bard-window.el | 45 | ||||
| -rw-r--r-- | bard-emacs-modules/bard-emacs-window.el | 68 |
2 files changed, 113 insertions, 0 deletions
diff --git a/bard-elisp/bard-window.el b/bard-elisp/bard-window.el new file mode 100644 index 0000000..e98e364 --- /dev/null +++ b/bard-elisp/bard-window.el @@ -0,0 +1,45 @@ +(defun prot-window-select-fit-size (window) + "Select WINDOW and resize it. +The resize pertains to the maximum and minimum values for height +and width, per `prot-window-window-sizes'. + +Use this as the `body-function' in a `display-buffer-alist' entry." + (select-window window) + (fit-window-to-buffer + window + (prot-window--get-window-size :max-height) + (prot-window--get-window-size :min-height) + (prot-window--get-window-size :max-width) + (prot-window--get-window-size :min-width)) + ;; If we did not use `display-buffer-below-selected', then we must + ;; be in a lateral window, which has more space. Then we do not + ;; want to dedicate the window to this buffer, because we will be + ;; running out of space. + (when (or (window-in-direction 'above) (window-in-direction 'below)) + (set-window-dedicated-p window t))) + +(defun prot-window--get-display-buffer-below-or-pop () + "Return list of functions for `prot-window-display-buffer-below-or-pop'." + (list + #'display-buffer-reuse-mode-window + (if (or (prot-common-window-small-p) + (prot-common-three-or-more-windows-p)) + #'display-buffer-below-selected + #'display-buffer-pop-up-window))) + +(defun prot-window-display-buffer-below-or-pop (&rest args) + "Display buffer below current window or pop a new window. +The criterion for choosing to display the buffer below the +current one is a non-nil return value for +`prot-common-window-small-p'. + +Apply ARGS expected by the underlying `display-buffer' functions. + +This as the action function in a `display-buffer-alist' entry." + (let ((functions (prot-window--get-display-buffer-below-or-pop))) + (catch 'success + (dolist (fn functions) + (when (apply fn args) + (throw 'success fn)))))) + +(provide 'bard-window) diff --git a/bard-emacs-modules/bard-emacs-window.el b/bard-emacs-modules/bard-emacs-window.el new file mode 100644 index 0000000..2cdd7f5 --- /dev/null +++ b/bard-emacs-modules/bard-emacs-window.el @@ -0,0 +1,68 @@ +(require 'bard-window) + +(setq window-combination-resize t) +(setq even-window-sizes 'height-only) +(setq window-sides-vertical nil) +(setq switch-to-buffer-in-dedicated-window 'pop) +(setq split-height-threshold 80) +(setq split-width-threshold 125) +(setq window-min-height 3) +(setq window-min-width 30) + +(use-package beframe + :ensure t + :config + (setq beframe-functions-in-frames '(project-prompt-project-dir)) + + (beframe-mode 1) + + (define-key global-map (kbd "C-x f") #'other-frame-prefix) + (define-key global-map (kbd "C-c b") beframe-prefix-map) + (define-key global-map (kbd "C-x C-b") #'beframe-buffer-menu) + (define-key global-map (kbd "C-x B") #'select-frame-by-name)) + +(setq display-buffer-alist + `(("\\`\\*Async Shell Command\\*\\'" + (display-buffer-no-window)) + ("\\`\\*\\(Warnings\\|Compile-Log\\)\\*\\'" + (display-buffer-no-window) + (allow-no-window . t)) + ("\\*\\(Calendar\\).*" + (display-buffer-reuse-mode-window display-buffer-below-selected) + (dedicated . t) + (window-height . fit-window-to-buffer)) + ("\\(\\*Capture\\*\\|CAPTURE-.*\\)" + (display-buffer-reuse-mode-window display-buffer-below-selected)) + + ;; error stuff + ((or . ((derived-mode . flymake-diagnostics-buffer-mode) + (derived-mode . flymake-project-diagnostics-mode) + (derived-mode . messages-buffer-mode) + (derived-mode . backtrace-mode) + (derived-mode . cider-stacktrace-mode))) + (display-buffer-reuse-mode-window display-buffer-at-bottom) + (window-height . 0.3) + (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 . help-mode) ; See the hooks for `visual-line-mode' + "\\*\\(|Buffer List\\|Occur\\|vc-change-log\\|eldoc.*\\).*" + prot-window-shell-or-term-p + ,world-clock-buffer-name)) + (prot-window-display-buffer-below-or-pop) + (body-function . prot-window-select-fit-size)) + )) + +(winner-mode 1) +(define-key global-map (kbd "C-c <right>") #'nil) +(define-key global-map (kbd "C-c <left>") #'nil) +(define-key global-map (kbd "C-x <right>") #'winner-redo) +(define-key global-map (kbd "C-x <right>") #'winner-undo) +(define-key global-map (kbd "C-x C-n") #'next-buffer) +(define-key global-map (kbd "C-x C-p") #'previous-buffer) +(define-key global-map (kbd "C-x <right>") #'next-buffer) +(define-key global-map (kbd "C-x <left>") #'previous-buffer) |
