kickstart.nvim/CLAUDE.md

81 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Overview
Kickstart-based Neovim config using lazy.nvim as the plugin manager. Single `init.lua` + modular custom plugins under `lua/custom/plugins/`.
## Plugin Manager
lazy.nvim — plugins defined as lazy specs (`return { "owner/repo", ... }`).
Update plugins: `:Lazy update`
Check status: `:Lazy`
Install/manage LSP tools: `:Mason`
## Structure
```
init.lua — Sections 19: foundation → plugins
lua/custom/plugins/init.lua — Auto-loads all *.lua files in same dir
lua/custom/plugins/*.lua — User-added plugins (no merge conflicts from upstream)
lua/kickstart/plugins/*.lua — Optional kickstart examples (indent_line, lint, gitsigns)
lazy-lock.json — Lockfile (commit this)
```
`init.lua` is organized into `do...end` blocks by section:
1. Foundation (options, keymaps, autocmds)
2. lazy.nvim bootstrap + setup
3. UI/UX (gitsigns, which-key, mini.nvim, todo-comments)
4. Search/Navigation (Telescope)
5. LSP (mason, nvim-lspconfig, fidget)
6. Formatting (conform.nvim)
7. Autocomplete & Snippets (blink.cmp + LuaSnip)
8. Treesitter
9. Optional examples
## Custom Plugins
| File | Purpose |
|------|---------|
| `claude.lua` | claudecode.nvim — `<leader>a*` keymaps; depends on snacks.nvim |
| `lsp.lua` | dbt language server config for SQL/YAML files |
| `markdown.lua` | live-preview.nvim |
| `notebook.lua` | molten-nvim (Jupyter), image.nvim (magick_cli), wezterm.nvim |
| `oil.lua` | oil.nvim file manager via mini.icons |
| `themes.lua` | gruvbox-medium (active), tokyonight (installed) |
| `toggle-term.lua` | toggleterm.nvim terminal toggle |
## LSP
Servers are configured in `init.lua:670` via `vim.lsp.config(name, server)` + `vim.lsp.enable(name)`.
Custom dbt server lives in `lua/custom/plugins/lsp.lua` — requires `dbt-language-server` in `$PATH`.
Lua formatting disabled in `lua_ls`; formatting delegated to `stylua` via conform.nvim.
## Key Bindings (leader = `<space>`)
- `<leader>s*` — Telescope search
- `<leader>f` — format buffer (conform)
- `<leader>a*` — Claude Code integration
- `<leader>h*` — gitsigns hunk operations
- `<leader>t*` — toggles (inlay hints, blame, word diff)
- `gr*` — LSP actions (rename, code action, references, definitions)
## Adding Plugins
Drop a `.lua` file in `lua/custom/plugins/` — auto-required on next start. Use the lazy spec pattern:
```lua
return {
"owner/repo",
opts = {},
}
```
## Formatting & Linting
- **Formatter**: conform.nvim — `<leader>f` to format; auto-format on save disabled by default (opt-in per filetype in `init.lua:760`)
- **Linter**: nvim-lint — runs on `BufEnter`/`BufWritePost`/`InsertLeave`; markdownlint for markdown
- **Treesitter**: auto-installs parsers on `FileType` event