language server for vim help files https://vimdoc-language-server.com
  • Rust 81.2%
  • MDX 10.3%
  • Shell 2.5%
  • CSS 2.4%
  • Astro 1.8%
  • Other 1.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Barrett Ruth cae4411533
All checks were successful
quality / Format (push) Successful in 5s
quality / Test (push) Successful in 1m1s
quality / Lint (push) Successful in 1m24s
quality / Release (push) Has been skipped
quality / Deploy (push) Successful in 10s
quality / Nightly (push) Successful in 33s
ci: run dependent jobs after quality instead of polling
2026-09-26 15:31:40 -05:00
.forgejo ci: run dependent jobs after quality instead of polling 2026-09-26 15:31:40 -05:00
examples feat: ship generated manpages 2026-05-01 16:34:34 -04:00
man chore: release v0.2.2 2026-05-02 20:49:07 +00:00
scripts fix: route releases through Forgejo PRs (#151) 2026-05-02 22:55:05 +00:00
site chore: use canonical forgejo domain [skip ci] 2026-09-21 07:48:22 -05:00
src Revert mis-scoped notification prefix change (#169) 2026-05-05 16:50:08 +00:00
tests feat: add format subcommand for CLI formatting (#127) 2026-03-25 10:56:13 -04:00
.editorconfig build: add prettier, editorconfig, and pre-commit config 2026-03-07 00:18:12 -05:00
.gitignore fix: ignore result- build symlinks 2026-08-26 17:00:19 +10:00
Cargo.lock chore: release v0.2.2 2026-05-02 20:49:07 +00:00
Cargo.toml chore: use canonical forgejo domain [skip ci] 2026-09-21 07:48:22 -05:00
CONTRIBUTING.md chore: use canonical forgejo domain [skip ci] 2026-09-21 07:48:22 -05:00
flake.lock build: track flake.lock; remove TODO 2026-03-07 00:05:34 -05:00
flake.nix chore: supply site language servers from Nix 2026-08-29 16:42:04 +10:00
justfile chore: add explicit release command (#145) 2026-05-01 22:50:37 +00:00
LICENSE chore: switch LICENSE to GPLv3 (post-remigrate) 2026-05-01 11:50:59 +00:00
README.md docs: host previews on Forgejo [skip ci] 2026-09-21 22:23:03 -05:00
rust-toolchain.toml build: add rust-analyzer to the toolchain 2026-09-11 17:21:55 +10:00
rustfmt.toml build: add nix flake, rust toolchain, and rustfmt config 2026-03-07 00:05:07 -05:00

vimdoc-language-server

Language server for vim help files.

Installation

Cargo

cargo install vimdoc-language-server

Nix

nix run git+https://forge.barrettruth.com/barrettruth/vimdoc-language-server.git

From source

git clone https://forge.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