Architecture
The language support system consists of three main components:LSP servers
Provide IntelliSense, diagnostics, go-to-definition, and refactoring capabilities
Formatters
Handled by conform.nvim for code formatting with format-on-save enabled
Linters
Managed by nvim-lint for code analysis, triggered manually with
<leader>llSupported languages
The configuration includes built-in support for:- TypeScript/JavaScript - tsgo LSP, Biome/Prettier formatting, ESLint linting
- Go - gopls LSP, goimports/gofumpt formatting, golangci-lint linting
- Lua - lua_ls LSP, stylua formatting, enhanced Neovim development support
- Markdown - render-markdown.nvim for preview, markdownlint for linting
- C/C++ - clangd LSP, clang-format formatting, cppcheck linting
- Shell - bashls LSP, shfmt formatting, shellcheck linting
- CSS/HTML - cssls/html LSP, Prettier formatting
- YAML/JSON - yamlls/jsonls LSP, yamlfmt/Prettier formatting
- Docker - dockerls LSP, dockerfmt formatting, hadolint linting
LSP configuration
Language servers are configured using Neovim 0.11+‘s native LSP support:Base configurations come from nvim-lspconfig, with custom overrides in
after/lsp/*.lua files.Global capabilities
All language servers share common capabilities:Installation approach
See the installation guide in the source repository for complete installation instructions.Quick verification
After installation, verify your tools:Keymaps
Common LSP keymaps (set in lua/plugins/lsp/init.lua:65):| Keymap | Action | Description |
|---|---|---|
K | Hover | Show documentation |
<C-k> | Signature help | Show function signature |
ga | Code action | Show available actions |
<leader>rn | Rename | Rename symbol |
]d / [d | Next/prev diagnostic | Navigate diagnostics |
<leader>cd | Show diagnostic | Show diagnostic float |
<leader>ih | Toggle inlay hints | Toggle type hints |
<leader>fb | Format buffer | Format code |
<leader>ll | Lint | Trigger linting |
Navigation keymaps (gd, gr, gi, etc.) are delegated to Snacks pickers for enhanced UX.
Diagnostic configuration
Diagnostics use custom icons and styling:Next steps
LSP setup
Detailed LSP configuration and customization
Formatting
Configure code formatters with conform.nvim
Linting
Set up linters with nvim-lint
TypeScript
TypeScript/JavaScript specific setup