nvim/AGENTS.md
ray f8f478a985 Complete config migration cleanup
Retire legacy files and migration fixtures, move runtime state out of the repository, and migrate Tree-sitter and textobjects to their Neovim 0.12-compatible main branches.
2026-10-28 19:26:42 +00:00

70 lines
3 KiB
Markdown

# AGENTS: Neovim Configuration
Scope: the entire `~/.config/nvim` repository.
## Current setup
This is the active, daily-use Neovim 0.12 configuration. It is Lua-first,
managed with lazy.nvim, and intended to remain small, fast, and maintainable.
The main workflows are:
- netrw for tree browsing, previews, and file operations
- Telescope for fuzzy files, grep, buffers, and symbols
- native `vim.lsp.config()` / `vim.lsp.enable()` configuration
- native insert-mode completion and snippets
- Copilot inline suggestions, separate from the completion menu
- Tree-sitter, Conform, nvim-lint, Gitsigns, and nvim-ufo
- native `nvim.undotree`
- project-local `.nvim.lua` files through native `exrc` + `secure`
`README.md` documents the user-facing workflows and keymaps. `LOG.md` records
architectural decisions.
## Maintenance rules
- Prefer Lua APIs such as `vim.opt`, `vim.keymap.set`, and
`vim.api.nvim_create_autocmd`; use Vimscript only when a native integration
requires it.
- Keep non-plugin behavior in focused modules under `lua/`.
- Keep each plugin specification self-contained under `lua/plugins/`.
- Continue using lazy.nvim; do not mix plugin managers without an explicit
decision to migrate.
- Do not add a plugin without explicit user confirmation.
- Keep netrw as the sole file explorer and Telescope as the fuzzy navigator.
- Use Neovim's native completion rather than reintroducing nvim-cmp or LuaSnip.
- Keep Copilot as inline suggestions rather than a completion-menu source.
- Use the modern LSP API; do not restore legacy `lspconfig.setup()` calls or
neoconf.
- Preserve native project-local configuration through `exrc` + `secure`.
- Keep providers for Ruby, Perl, and Node disabled unless an active plugin
requires one.
- Preserve the existing Lua tabline, but do not restore the old Vimscript
tabline/statusline, foldtext, cursorline/column window hacks, CoC, Neo-tree,
motion plugins, or Markdown rendering plugins unless the user explicitly
revisits those decisions.
- Preserve unrelated user changes and keep patches narrowly scoped.
## Documentation and validation
- Update `README.md` whenever user-facing behavior or keymaps change.
- Update its configuration section when formatter, linter, or tool resolution
changes.
- Record significant architectural decisions in `LOG.md`.
- After configuration or plugin changes, run at least:
```bash
nvim --headless -c 'lua print("Config loads")' -c 'quitall'
```
- For relevant changes, also exercise the affected workflow interactively.
## History
This configuration began as a large Vimscript setup with bundled plugins and
was incrementally rebuilt as a modern Lua configuration. The migration covered
lazy.nvim, native LSP and project configuration, native completion and
Undotree, Telescope, a netrw-centered explorer workflow, Tree-sitter, Copilot,
formatting, linting, and the Paper Tonic colorscheme. After sustained daily use
on Neovim 0.12.6, the migration was declared complete on 2026-10-28. The
decision history remains in `LOG.md` and Git history.