README.md
author Luke Hoersten <luke@hoersten.org>
Thu, 02 Oct 2025 10:54:52 -0500
changeset 112 c4c346aa93ab
child 113 79c72453f70d
permissions -rw-r--r--
Replaced flyspell mode with jinx. Changes: - Added jinx package - Replaced flyspell-mode with jinx-mode in text-mode and markdown-mode - Added enchant detection that shows a helpful warning in Warnings buffer if enchant is not installed, with OS-specific install instructions If enchant isn't installed when you start Emacs, you'll see a warning popup with instructions for your OS (brew for macOS, apt for Ubuntu).
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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