# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Repository Purpose Personal dotfiles repository for Shawn Borton's development environment. Configs for Doom Emacs, Vim, Bash, and tmux — primarily targeting Linux (Arch Linux and NixOS systems: archie, peregrine) with some historical macOS artifacts. ## File Overview | File | Purpose | |------|---------| | `config.el` | Primary Doom Emacs private config (keybindings, UI, packages config) | | `init.el` | Doom Emacs module selection | | `packages.el` | Additional Doom Emacs package declarations | | `.vimrc` | Vim config with vim-plug plugin manager | | `.bash_profile` | Shell aliases, prompt, NVM setup | | `.tmux.conf` | tmux keybindings and status bar | ## Doom Emacs Workflow After editing `config.el`, `init.el`, or `packages.el`: ```bash doom sync # Sync packages and modules (required after packages.el changes) doom reload # Reload config without restarting (for config.el/init.el changes) ``` ## Key Conventions **Doom Emacs:** - Uses Evil mode with `jk` as the escape sequence - Leader key bindings are defined in `config.el` under `map!` blocks - Custom packages are declared in `packages.el` using `package!` with optional `:recipe` for git sources - Modules are toggled in `init.el` with flags like `(python +lsp +pyright +tree-sitter)` - Fonts: JetBrains Mono (14pt) for fixed-pitch, Overpass Nerd Font (18pt) for variable-pitch - Theme: `doom-oceanic-next` **Vim:** - Plugin manager: vim-plug (auto-installs to `~/.vim/autoload/plug.vim` on first run) - Run `:PlugInstall` after adding new plugins to `.vimrc` **tmux:** - Prefix is `C-a` (not the default `C-b`) - Reload config with `C-a r` ## Notable Integrations in config.el - **Elfeed** (RSS): Connects to a self-hosted Fever API at `rss.onionpatch.cloud`; feeds are tagged and filtered with custom keybindings under the leader key - **Pocket**: Integrated with elfeed for article saving via `pocket-reader` - **gptel / chatgpt-shell**: LLM/ChatGPT integration packages declared in `packages.el` - **org-roam**: Unpinned in `packages.el` for a custom version; roam2 module enabled in `init.el` - **Dired**: Custom `h`/`l` navigation keys; Thunar integration for GUI file manager