This commit is contained in:
Joe Frikker
2026-01-22 16:29:02 -05:00
parent fe9ef8415f
commit e7c2774a9d

View File

@@ -1,4 +1,5 @@
#+PROPERTY: header-args :mkdirp yes #+PROPERTY: header-args :mkdirp yes
#+PROPERTY: header-args:elisp :lexical t
* Overall Structure * Overall Structure
@@ -133,6 +134,7 @@ are still Shibumi-specific; ideally I'd find another way to install them.
iosevka iosevka
kube kube
kubectl kubectl
mariadb.client
nerd-fonts.jetbrains-mono nerd-fonts.jetbrains-mono
openssh openssh
tokei tokei
@@ -602,7 +604,7 @@ emacs.
<<emacs_packages>> <<emacs_packages>>
]; ];
emacs.extraConfig = '' emacs.extraConfig = ''
<<emacs_early>> ;;; -*- lexical-binding: t -*-
<<emacs_config>> <<emacs_config>>
''; '';
#+END_SRC #+END_SRC
@@ -650,6 +652,10 @@ Turn off some default settings that I don't find useful.
(setq make-backup-files nil) (setq make-backup-files nil)
(setq split-window-threshold 200) (setq split-window-threshold 200)
(setq split-height-threshold 200) (setq split-height-threshold 200)
(setopt display-buffer-base-action
'((display-buffer-reuse-window display-buffer-same-window
display-buffer-in-previous-window
display-buffer-use-some-window)))
(setq view-read-only t) (setq view-read-only t)
#+END_SRC #+END_SRC
@@ -763,6 +769,8 @@ Use variable-width fonts in text buffers. ~mixed-pitch-mode~ keeps most code blo
(add-hook 'mhtml-mode 'no-mixed-pitch) (add-hook 'mhtml-mode 'no-mixed-pitch)
#+END_SRC #+END_SRC
A basic ace-window setup. Allows switching between windows quickly (although avy can do the same...).
#+BEGIN_SRC elisp :noweb-ref emacs_config #+BEGIN_SRC elisp :noweb-ref emacs_config
(use-package ace-window (use-package ace-window
:bind (("M-o" . ace-window) :bind (("M-o" . ace-window)
@@ -772,7 +780,7 @@ Use variable-width fonts in text buffers. ~mixed-pitch-mode~ keeps most code blo
(setq aw-dispatch-always t)) (setq aw-dispatch-always t))
#+END_SRC #+END_SRC
Set up a few project- / workspace-related key bindings. Set up a few project- / workspace-related key bindings.
#+name: workspace_keybinds #+name: workspace_keybinds
#+BEGIN_SRC elisp :noweb no :noweb-ref emacs_config #+BEGIN_SRC elisp :noweb no :noweb-ref emacs_config
@@ -801,6 +809,14 @@ I'm trying this out. This disables visual selections. It's bold, which is why I
(transient-mark-mode -1) (transient-mark-mode -1)
#+END_SRC #+END_SRC
I use tabs to manage multiple "workspaces". I don't tie a project to a tab or anything; often fixing
a single bug might involve pulling in files from multiple projects. Rather, I open a file per bug /
fix / issue, and leave it open until I'm done with that issue.
~tab-bar-history-mode~ allows quickly rolling back window changes; it can be used to undo a context
change when drilling into a help page or something. I've set up repeat mode to make it easier to
move backward / forward through history.
#+BEGIN_SRC elisp :noweb no :noweb-ref emacs_config #+BEGIN_SRC elisp :noweb no :noweb-ref emacs_config
(use-package tab-bar (use-package tab-bar
:config :config
@@ -819,6 +835,7 @@ This configuration affects general text editing, across all modes. First, some p
avy avy
devil devil
edit-indirect edit-indirect
embark
god-mode god-mode
string-inflection string-inflection
#+END_SRC #+END_SRC
@@ -867,6 +884,10 @@ its own devil-mode-only repeat maps that don't interfere when using normal modif
(which-key-enable-god-mode-support)) (which-key-enable-god-mode-support))
#+END_SRC #+END_SRC
Avy allows jumping to any place on the screen with just a few keystrokes. I've stolen most of these
ideas from Karthinks' article [[https://karthinks.com/software/avy-can-do-anything/][Avy can do Anything]]. I need to find more uses for this, in line with
his article.
#+BEGIN_SRC elisp :noweb-ref emacs_config #+BEGIN_SRC elisp :noweb-ref emacs_config
(use-package avy (use-package avy
:bind ("M-j" . avy-goto-char-timer)) :bind ("M-j" . avy-goto-char-timer))
@@ -888,10 +909,22 @@ its own devil-mode-only repeat maps that don't interfere when using normal modif
(bind-keys (bind-keys
("M-J" . avy-goto-char-timer-embark)) ("M-J" . avy-goto-char-timer-embark))
(use-package embark
:bind
(("C-." . embark-act) ;; pick some comfortable binding
))
#+END_SRC
Just "silently" wrap when searching at the bottom of a document.
#+BEGIN_SRC elisp :noweb-ref emacs_config
(use-package isearch (use-package isearch
:custom :custom
(isearch-wrap-pause 'no-ding)) (isearch-wrap-pause 'no-ding))
#+END_SRC
#+BEGIN_SRC elisp :noweb-ref emacs_config
(use-package string-inflection (use-package string-inflection
:commands :commands
string-inflection-java-style-cycle string-inflection-java-style-cycle
@@ -1138,19 +1171,35 @@ available? It seems to work for now anyway...
'eglot-list-connections-mode-hook)) 'eglot-list-connections-mode-hook))
(add-hook hook 'tab-line-mode)) (add-hook hook 'tab-line-mode))
(let ((bottom-window-params '((side . bottom) (cl-flet ((defbottom (&optional (slot 1))
(lambda (rule)
`(,rule
(display-buffer-reuse-window display-buffer-in-side-window)
(side . bottom)
(slot . ,slot)
(window-height . 0.33)
(window-parameters (no-delete-other-windows . t)))))
(defright (&optional (slot 0))
(lambda (rule)
`(,rule
(display-buffer-reuse-window display-buffer-in-side-window)
(side . right)
(slot . ,slot)
(window-width . 0.5)
(window-parameters (no-delete-other-windows . t)))))
(defall (def &rest rules)
(mapcar (lambda (rule) (funcall def rule)) rules)))
(let* ((bottom-window-params '((side . bottom)
(slot . 1) (slot . 1)
(window-height . 0.33) (window-height . 0.33)
(window-parameters (no-delete-other-windows . t)))) (window-parameters (no-delete-other-windows . t))))
(right-window-params '((side . right) (right-window-params '((side . right)
(window-width . 0.5) (window-width . 0.5)
(window-parameters (no-delete-other-windows . t))))) (window-parameters (no-delete-other-windows . t))))
(right-window-slot-1-params (cons '(slot . 1) right-window-params)))
(setopt display-buffer-alist (setopt display-buffer-alist
(append (append
(mapcar (lambda (buffer) `(,buffer (defall (defbottom)
(display-buffer-reuse-window display-buffer-in-side-window)
,@bottom-window-params))
(list
"\\*Flymake diagnostics *" "\\*Flymake diagnostics *"
"\\*Embark Export *" "\\*Embark Export *"
"\\*Embark Collect *" "\\*Embark Collect *"
@@ -1158,14 +1207,16 @@ available? It seems to work for now anyway...
"\\*compilation\\*" "\\*compilation\\*"
"\\*sly-mrepl *" "\\*sly-mrepl *"
"\\*Messages\\*" "\\*Messages\\*"
"\\*EGLOT connections\\*")) "\\*lispy-message\\*"
(mapcar (lambda (buffer) `(,buffer "\\*EGLOT connections\\*"
(display-buffer-reuse-window display-buffer-in-side-window) "\\*trace-output\\*")
,@right-window-params)) (defall (defright)
(list
"magit: *" "magit: *"
"magit-revision: *" "magit-revision: *"
"\\*eldoc\\*"))))) "\\*eldoc\\*"
"\\*Help\\*")
(defall (defright -1)
"\\*Embark Actions\\*")))))
(setq ediff-split-window-function 'split-window-horizontally) (setq ediff-split-window-function 'split-window-horizontally)
#+END_SRC #+END_SRC
@@ -1200,6 +1251,7 @@ available? It seems to work for now anyway...
("C-c M-g" . magit-file-dispatch)) ("C-c M-g" . magit-file-dispatch))
:custom :custom
(magit-save-repository-buffers 'dontask) (magit-save-repository-buffers 'dontask)
(magit-commit-show-diff nil)
:config :config
(set-face-attribute 'git-commit-summary nil :inherit nil) (set-face-attribute 'git-commit-summary nil :inherit nil)
(defun magit-fetch-all-on-load () (defun magit-fetch-all-on-load ()
@@ -1223,7 +1275,6 @@ available? It seems to work for now anyway...
cape cape
consult consult
corfu corfu
embark
embark-consult embark-consult
marginalia marginalia
orderless orderless
@@ -1315,11 +1366,6 @@ available? It seems to work for now anyway...
:config :config
(marginalia-mode)) (marginalia-mode))
(use-package embark
:bind
(("C-." . embark-act) ;; pick some comfortable binding
))
(use-package corfu (use-package corfu
:custom :custom
(corfu-cycle t) (corfu-cycle t)