README.md
changeset 112 c4c346aa93ab
child 113 79c72453f70d
equal deleted inserted replaced
111:025f0680d73a 112:c4c346aa93ab
       
     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