kickstart.nvim/README.md

51 lines
2.0 KiB
Markdown

# River's Neovim config
This configuration targets **Neovim 0.12.x** and pins the complete plugin graph
in `lazy-lock.json`. Normal editor startup never updates plugins. A weekly GitHub
Actions job proposes lockfile updates in a pull request, and the same isolated
smoke test runs on every push and pull request.
That gives updates a rollback point and keeps upstream breaking changes out of
the working editor until they pass CI. It cannot make arbitrary upstream
changes risk-free, but it turns them into reviewed, reversible changes instead
of surprise startup failures.
## Install
Required: Neovim 0.12.x, Git, a C compiler, `make`, `unzip`, and `ripgrep`. A Nerd
Font is recommended. Language servers, formatters, and debuggers are installed
through Mason on first interactive startup.
```sh
git clone https://github.com/RiverMatsumoto/kickstart.nvim.git \
"${XDG_CONFIG_HOME:-$HOME/.config}/nvim"
nvim
```
To try it without replacing another config:
```sh
git clone https://github.com/RiverMatsumoto/kickstart.nvim.git ~/.config/nvim-river
NVIM_APPNAME=nvim-river nvim
```
## Updates
- Do not use `:Lazy update` on the main branch for routine updates.
- Merge the automated `chore: update locked Neovim plugins` pull request after
its checks pass.
- To test an update locally, run `scripts/nvim-test.sh update`. This uses
isolated data/cache directories and changes only `lazy-lock.json`.
- Restore the committed versions at any time with `:Lazy restore`.
The Neovim version is pinned in `.nvim-version`. Upgrade Neovim separately from
plugin updates so failures have one clear cause.
## Design choices
The version guard, modular setup conventions, native `vim.lsp.config` API, and
current Treesitter `main` API follow the useful compatibility patterns in
[jdhao/nvim-config](https://github.com/jdhao/nvim-config). The system package
installer is intentionally not run from Neovim; editor startup should never ask
for administrator privileges or mutate the operating system.