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