author | Luke Hoersten <luke@hoersten.org> |
Thu, 02 Oct 2025 10:54:52 -0500 | |
changeset 112 | c4c346aa93ab |
child 113 | 79c72453f70d |
permissions | -rw-r--r-- |
112
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
1 |
# Emacs Configuration |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
2 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
3 |
Personal Emacs configuration focused on simplicity and modern tooling while respecting default Emacs keybindings. |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
4 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
5 |
## Philosophy |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
6 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
7 |
- Clean and minimal configuration |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
8 |
- Prefer built-in Emacs functionality when possible |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
9 |
- Use modern, actively maintained packages |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
10 |
- Respect default Emacs keybindings |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
11 |
- Single `init.el` file for simplicity |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
12 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
13 |
## Structure |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
14 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
15 |
``` |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
16 |
~/.emacs.d/ |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
17 |
├── init.el # Main configuration file |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
18 |
├── elisp/ # Custom configuration modules |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
19 |
│ ├── c-init.el # C/C++ configuration |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
20 |
│ └── ansible-init.el # Ansible/YAML configuration |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
21 |
└── README.md # This file |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
22 |
``` |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
23 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
24 |
## Key Packages |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
25 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
26 |
### Completion Framework |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
27 |
- **vertico** - Vertical completion UI |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
28 |
- **orderless** - Flexible completion style (space-separated patterns) |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
29 |
- **consult** - Enhanced commands (buffer switching, search, etc.) |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
30 |
- **marginalia** - Helpful annotations in completion candidates |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
31 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
32 |
### Development |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
33 |
- **company** - Auto-completion |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
34 |
- **flycheck** - Syntax checking |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
35 |
- **treesit-auto** - Tree-sitter modes with automatic grammar installation |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
36 |
- **magit** - Git interface |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
37 |
- **forge** - GitHub/GitLab integration for magit |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
38 |
- **magit-todos** - Show TODO/FIXME comments in magit status |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
39 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
40 |
### Editing |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
41 |
- **paredit** - Structured editing for Lisp |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
42 |
- **expand-region** - Smart region expansion |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
43 |
- **move-text** - Move lines/regions up and down |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
44 |
- **visual-regexp** - Visual feedback for regexp replace |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
45 |
- **yasnippet** - Snippet expansion |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
46 |
- **emmet-mode** - HTML/CSS abbreviation expansion |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
47 |
- **rainbow-delimiters** - Colorize nested delimiters |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
48 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
49 |
### Modes |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
50 |
- **markdown-mode** - Markdown editing |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
51 |
- **terraform-mode** - Terraform configuration files |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
52 |
- **yaml-mode** - YAML files |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
53 |
- **json-mode** - JSON files |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
54 |
- **hgignore-mode** - Mercurial ignore files |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
55 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
56 |
### Utilities |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
57 |
- **ibuffer-project** - Group buffers by project |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
58 |
- **exec-path-from-shell** - Import shell environment variables |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
59 |
- **rg** - ripgrep integration |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
60 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
61 |
## Key Bindings |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
62 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
63 |
### Custom Bindings |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
64 |
- `C-c c` - Compile |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
65 |
- `C-c r` - Recompile |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
66 |
- `C-c a` - Align regexp |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
67 |
- `C-c g` - Consult ripgrep (search with preview) |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
68 |
- `C-c s` - Launch eshell |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
69 |
- `C-x g` - Magit status |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
70 |
- `C-x C-b` - ibuffer (better buffer list) |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
71 |
- `C-=` - Expand region |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
72 |
- `M-p` / `M-n` - Move text up/down |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
73 |
- `M-%` - Visual regexp replace |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
74 |
- `C-M-%` - Visual regexp query replace |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
75 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
76 |
### Enhanced Default Bindings |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
77 |
- `M-x` - Command execution (enhanced with vertico) |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
78 |
- `C-x b` - Switch buffer (enhanced with consult) |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
79 |
- `M-y` - Yank from kill ring (enhanced with consult) |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
80 |
- `M-/` - Company completion |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
81 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
82 |
## Installation |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
83 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
84 |
1. Clone this repository: |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
85 |
```bash |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
86 |
git clone [email protected]:lukehoersten/emacs.d.git ~/.emacs.d |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
87 |
``` |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
88 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
89 |
2. Launch Emacs - packages will auto-install on first run |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
90 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
91 |
3. For tree-sitter modes, grammars install automatically when first opening a file |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
92 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
93 |
## Tree-sitter Support |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
94 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
95 |
Tree-sitter provides faster, more accurate syntax highlighting and parsing. Enabled automatically for: |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
96 |
- JavaScript/TypeScript |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
97 |
- JSON |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
98 |
- Python |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
99 |
- And many more (via `treesit-auto`) |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
100 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
101 |
Grammars install automatically on first use. |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
102 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
103 |
## Customizations |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
104 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
105 |
Emacs customizations are redirected to `custom.el` (gitignored) to keep `init.el` clean. |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
106 |
The configuration uses `package-require` for explicit package management. |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
107 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
108 |
## Updating Packages |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
109 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
110 |
```elisp |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
111 |
M-x package-refresh-contents |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
112 |
M-x package-update-all |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
113 |
``` |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
114 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
115 |
## Notes |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
116 |
|
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
117 |
- Theme: Solarized Light (GUI only) |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
118 |
- Font: Inconsolata-12 (GUI only) |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
119 |
- Shell: eshell (launched automatically on startup) |
c4c346aa93ab
Replaced flyspell mode with jinx.
Luke Hoersten <luke@hoersten.org>
parents:
diff
changeset
|
120 |
- Whitespace cleanup on save enabled globally |