src.nth.io/

summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md85
1 files changed, 52 insertions, 33 deletions
diff --git a/README.md b/README.md
index e4ba8b1..e79a622 100644
--- a/README.md
+++ b/README.md
@@ -13,72 +13,94 @@ Personal Emacs configuration focused on simplicity and modern tooling while resp
## Structure
```
-~/.emacs.d/
-├── init.el # Main configuration file
-├── elisp/ # Custom configuration modules
-│ ├── c-init.el # C/C++ configuration
-│ └── ansible-init.el # Ansible/YAML configuration
-└── README.md # This file
+~/.config/emacs/
+├── init.el # Main configuration file
+├── elisp/ # Custom configuration modules
+│ ├── c-init.el # C/C++ configuration
+│ └── ansible-init.el # Ansible/YAML configuration
+├── custom.el # Custom-set variables (gitignored)
+└── README.md # This file
```
## Key Packages
### Completion Framework
-- **vertico** - Vertical completion UI
+- **vertico** - Vertical minibuffer completion UI
- **orderless** - Flexible completion style (space-separated patterns)
-- **consult** - Enhanced commands (buffer switching, search, etc.)
+- **consult** - Enhanced commands (buffer switching, search, yank-pop)
- **marginalia** - Helpful annotations in completion candidates
+- **embark** - Contextual actions on completion candidates
+- **corfu** - In-buffer completion popup (manual trigger)
+- **cape** - completion-at-point extensions (dabbrev, file paths)
### Development
-- **company** - Auto-completion
-- **flycheck** - Syntax checking
-- **jinx** - Fast spell-checking (requires enchant)
+- **eglot** - Built-in LSP client (Python, JS/TS, C/C++, YAML, JSON, CSS/SCSS, HTML, Haskell)
+- **flymake** - Built-in syntax checking (enabled in all `prog-mode` buffers)
+- **jinx** - Fast spell-checking globally enabled in `text-mode`, `prog-mode`, and `conf-mode` (skips code identifiers, only checks comments/strings in code)
- **treesit-auto** - Tree-sitter modes with automatic grammar installation
- **magit** - Git interface
- **forge** - GitHub/GitLab integration for magit
- **magit-todos** - Show TODO/FIXME comments in magit status
+- **diff-hl** - Inline git diff indicators in fringe (synced with magit)
### Editing
- **paredit** - Structured editing for Lisp
- **expand-region** - Smart region expansion
- **move-text** - Move lines/regions up and down
- **visual-regexp** - Visual feedback for regexp replace
-- **yasnippet** - Snippet expansion
- **emmet-mode** - HTML/CSS abbreviation expansion
- **rainbow-delimiters** - Colorize nested delimiters
+### Search & Navigation
+- **avy** - Jump to visible text by typing target chars
+- **rg** - ripgrep results buffer
+- **wgrep** - Editable grep/rg results buffers
+
### Modes
- **markdown-mode** - Markdown editing
-- **terraform-mode** - Terraform configuration files
-- **yaml-mode** - YAML files
-- **json-mode** - JSON files
-- **hgignore-mode** - Mercurial ignore files
+- **terraform-mode** - Terraform/HCL configuration
+- **json-reformat** - JSON pretty-printing
+- **ansible-doc** - Ansible module documentation lookup
+- **jinja2-mode** - Jinja2 template syntax
+- **haskell-mode** - Haskell editing
+- Built-in `css-mode` handles `.scss` files (auto-upgraded to `css-ts-mode` via treesit-auto)
+
+### UI
+- **solarized-theme** - Color theme
+- **auto-dark** - Switch theme with macOS dark mode
+- **helpful** - Better Help buffers with source links
+- **which-key** - Built-in popup of key completions
### Utilities
- **ibuffer-project** - Group buffers by project
- **exec-path-from-shell** - Import shell environment variables
-- **rg** - ripgrep integration
+- **ghostel** - libghostty terminal emulator
+- **claude-code-context** - Send Emacs buffer context to Claude Code (loaded from `~/Dev/code/git/elisp/claude-code-context`)
## Key Bindings
### Custom Bindings
+- `C-c b` - Browse URL at point
- `C-c c` - Compile
- `C-c r` - Recompile
- `C-c a` - Align regexp
- `C-c g` - Consult ripgrep (search with preview)
- `C-c s` - Launch eshell
+- `C-c C-l` - claude-code-context prefix (`u` update, `d` diagnostics, `c` clear, `m` toggle mode)
- `C-x g` - Magit status
- `C-x C-b` - ibuffer (better buffer list)
- `C-=` - Expand region
+- `C-:` - Avy jump (2 chars)
+- `C-,` - Embark act (contextual actions)
+- `C-.` - Embark dwim (default action)
- `M-p` / `M-n` - Move text up/down
-- `M-%` - Visual regexp replace
-- `C-M-%` - Visual regexp query replace
+- `M-/` - Completion at point (corfu)
### Enhanced Default Bindings
- `M-x` - Command execution (enhanced with vertico)
-- `C-x b` - Switch buffer (enhanced with consult)
+- `C-x b` / `C-x 4 b` / `C-x 5 b` - Switch buffer (enhanced with consult)
- `M-y` - Yank from kill ring (enhanced with consult)
-- `M-/` - Company completion
+- `C-h f` / `C-h v` / `C-h k` / `C-h x` - Help (enhanced with helpful)
## Installation
@@ -96,31 +118,24 @@ sudo apt install libenchant-2-dev pkg-config
### Setup
-1. Clone this repository:
+1. Clone this repository to `~/.config/emacs`:
```bash
- git clone [email protected]:lukehoersten/emacs.d.git ~/.emacs.d
+ git clone [email protected]:lukehoersten/emacs.d.git ~/.config/emacs
```
2. Launch Emacs - packages will auto-install on first run
3. Jinx spell-checker will compile its native module on first launch (requires enchant)
-4. For tree-sitter modes, grammars install automatically when first opening a file
+4. Tree-sitter grammars install automatically on first use
## Tree-sitter Support
-Tree-sitter provides faster, more accurate syntax highlighting and parsing. Enabled automatically for:
-- JavaScript/TypeScript
-- JSON
-- Python
-- And many more (via `treesit-auto`)
-
-Grammars install automatically on first use.
+Tree-sitter provides faster, more accurate syntax highlighting and parsing. Enabled automatically via `treesit-auto` for JavaScript/TypeScript, JSON, Python, YAML, CSS, HTML, C/C++, and many more. Grammars install on first use.
## Customizations
Emacs customizations are redirected to `custom.el` (gitignored) to keep `init.el` clean.
-The configuration uses `package-require` for explicit package management.
## Updating Packages
@@ -131,7 +146,11 @@ M-x package-update-all
## Notes
-- Theme: Solarized Light (GUI only)
+- Theme: Solarized, switches between light/dark with macOS dark mode (via `auto-dark`)
- Font: Inconsolata-12 (GUI only)
- Shell: eshell (launched automatically on startup)
+- Server: emacs server starts automatically for `emacsclient`
- Whitespace cleanup on save enabled globally
+- Line numbers enabled globally (exempt: eshell, term, vterm, Messages)
+- Rainbow delimiters enabled in all `prog-mode` and `text-mode` buffers
+- Auto-fill (line wrap at column 120) enabled in all `text-mode` buffers