language server for vim help files
https://vimdoc-language-server.com
- Rust 80.1%
- MDX 10.9%
- Shell 3.1%
- CSS 2.4%
- Astro 1.8%
- Other 1.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
## Checklist - [ ] I have read [CONTRIBUTING.md](https://git.barrettruth.com/barrettruth/vimdoc-language-server/src/branch/main/CONTRIBUTING.md). - [ ] No AI was used to generate, edit, or review any part of this contribution. ## Problem ## Solution Reviewed-on: #172 |
||
| .forgejo | ||
| .github/workflows | ||
| examples | ||
| man | ||
| scripts | ||
| site | ||
| src | ||
| tests | ||
| .editorconfig | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CONTRIBUTING.md | ||
| flake.lock | ||
| flake.nix | ||
| justfile | ||
| LICENSE | ||
| README.md | ||
| rust-toolchain.toml | ||
| rustfmt.toml | ||
vimdoc-language-server
Language server for vim help files.
Note
Due to GitHub's historic unreliability, active development is hosted on Forgejo. GitHub is maintained as a read-only mirror.
Installation
Cargo
cargo install vimdoc-language-server
Nix
nix run git+https://git.barrettruth.com/barrettruth/vimdoc-language-server.git
From source
git clone https://git.barrettruth.com/barrettruth/vimdoc-language-server.git
cd vimdoc-language-server
cargo install --path .
Usage
Configure vimdoc-language-server in your editor of choice, for example with
Neovim via
nvim-lspconfig:
vim.lsp.enable('vimdoc_ls')
CLI
The server also provides standalone CLI subcommands that work without an editor.
Format vimdoc files (in-place or check-only for CI):
vimdoc-language-server format doc/
vimdoc-language-server format --check doc/*.txt
vimdoc-language-server --line-width 80 format doc/
Check for diagnostics (duplicate tags, unresolved taglinks):
vimdoc-language-server check doc/
vimdoc-language-server check --ignore unresolved-tag doc/
Features
- Formatting — separator normalization, prose reflow, heading alignment; range formatting supported
- Diagnostics — duplicate
*tag*definitions (same-file and cross-file), unresolved|taglinks|; push, pull, and CLI (check) - Completion — tag completion triggered by
|, context-aware - Hover — tag definition context in a floating window
- Go-to-definition —
|tag-ref|to*tag*, same-file and cross-file - References — all
|taglinks|referencing a*tag*, cross-file - Rename — rename a tag and all its references across the workspace
- Document symbols — all
*tag*definitions in the current file - Document highlight — highlight all occurrences of a tag under cursor
- Document links — clickable
|taglinks|with tooltip - Folding — sections (between separators) and code blocks
- Code actions — quick fixes and refactors
Acknowledgements
- @skewb1k - pull diagnostics deduplication fix