# 🌌 Whipsmart Neovim (4rc0s/whipsmart.nvim) This is the **Grand Unified** Neovim configuration for all my machines, built on the Neovim 0.12+ native `vim.pack` system with a modern modular architecture. ## πŸš€ Native Package Workflow (0.12+) We use **`pack-manager.nvim`** for a Lazy-like UI experience: 1. `pm`: Open the **Package Manager Menu**. 2. From the menu, you can Update, Install, or Manage plugins. **Low-level access:** - `ps`: **Sync** (Fetch updates via native `vim.pack.update()`). - `pi`: **Inspect** (Native offline status). ## πŸ—οΈ Modular Architecture Plugin configurations are split into logically organized files in `lua/plugins/`: - `pack_manager.lua`: The `pack-manager.nvim` UI wrapper. - `core_ui.lua`: UI enhancements (Colorscheme, Gitsigns, Mini, etc.). - `telescope.lua`: Fuzzy finding and LSP navigation. - `lsp.lua`: Language Server Protocol and Mason setup. - `cmp.lua`: Autocompletion and Snippets. - `treesitter.lua`: Syntax highlighting and parsing. - `format.lua`: Auto-formatting via `conform.nvim`. Modules are loaded in this explicit order from `init.lua` (Section 2). **Opt-in extras** live in `lua/whipsmart/plugins/` and are not loaded by default. To enable one, require it from a file in `lua/custom/plugins/`: ```lua -- lua/custom/plugins/debug.lua require 'whipsmart.plugins.debug' ``` Available extras: `autopairs`, `debug` (DAP/Go), `gitsigns` (extended keymaps), `indent_line`, `lint`, `neo-tree`. ## πŸ’» Per-Machine Local Config Each machine maintains a `lua/local.lua` that is **gitignored** and never committed. `init.lua` loads it at startup via `pcall(require, 'local')` β€” silently skipped if absent. Use it for anything machine-specific: font size, colorscheme overrides, GUI settings, local interpreter paths, or enabling whipsmart opt-in extras only on that machine. See `lua/local.lua.example` for a documented template. **Setup on a new machine:** ```sh git clone git@github.com:4rc0s/whipsmart.nvim.git ~/.config/nvim cp ~/.config/nvim/lua/local.lua.example ~/.config/nvim/lua/local.lua # Edit lua/local.lua for this machine, then launch nvim ``` ## πŸ—ΊοΈ The Grand Unified Roadmap - [x] Rename project to **whipsmart.nvim**. - [x] Refactor into a modular architecture. - [x] Install `pack-manager.nvim` for an ergonomic frontend. - [x] Complete rebrand β€” remove all `kickstart-*` augroup names and namespaces. - [x] Fix `lua/custom/plugins/` loading (was silently never called). - [x] Explicit plugin load order in `init.lua`. - [x] Decouple Mason package names from lspconfig server names. - [x] Document LSP server setup and opt-in extras workflow. - [x] Replace hostname detection with gitignored lua/local.lua per-machine overrides. - [x] Port hecate config: LSP servers, formatters, treesitter parsers, custom plugins. - [ ] Migrate vera and tau to whipsmart (create their lua/local.lua files). - [ ] Add machine-specific UI toggles for terminal vs. GUI Neovim (via local.lua). - [ ] Centralize snippet collections. ## πŸ› οΈ Git Maintenance - **Origin:** `https://github.com/4rc0s/whipsmart.nvim` > This project has diverged significantly from its kickstart.nvim origin in > architecture and philosophy. Upstream syncing from kickstart.nvim is no > longer applicable β€” whipsmart.nvim is its own project. ### Tracking Key Upstream Dependencies **`pack-manager.nvim`** (`https://github.com/mplusp/pack-manager.nvim`) is the UI layer over `vim.pack` and the most architecturally significant third-party dependency. Watch this repo for new features, API changes, and bug fixes. To pick up an improvement: 1. Check the [pack-manager.nvim releases/commits](https://github.com/mplusp/pack-manager.nvim/commits/main) for relevant changes. 2. Run `ps` to pull the latest revision and update `nvim-pack-lock.json`. 3. Commit the updated lockfile to pin the new version.