language server for vim help files https://vimdoc-language-server.com
  • Rust 80.7%
  • MDX 11%
  • Shell 2.5%
  • CSS 2.4%
  • Astro 1.8%
  • Other 1.6%
Find a file
Barrett Ruth 8f615ef6f6
All checks were successful
quality / Format (push) Successful in 9s
quality / Test (push) Successful in 38s
quality / Lint (push) Successful in 56s
deploy / Deploy (push) Successful in 4m1s
deploy / Nightly (push) Successful in 4m20s
fix(ci): put nightly releases under deploy workflow (#160)
Problem
The nightly workflow publishes tags/releases, but its status context is currently rendered under the nightly workflow prefix instead of the deploy namespace.

Solution
Rename the nightly workflow from nightly to deploy while keeping the job name as Nightly. The rendered main-push context should become:

- deploy / Nightly (push)

The nightly release behavior, main-push trigger, and quality wait gate are unchanged.

Verification
- Parsed .forgejo/workflows/nightly.yaml with PyYAML.
- Ran git diff --check.

Reviewed-on: #160
2026-05-03 16:19:23 +00:00
.forgejo fix(ci): put nightly releases under deploy workflow (#160) 2026-05-03 16:19:23 +00:00
.github/workflows ci: redirect GitHub PRs to Forgejo (#158) 2026-05-03 15:57:06 +00: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 fix(site): link generated HTML pages directly (#152) 2026-05-03 14:52:54 +00:00
src feat: ship generated manpages 2026-05-01 16:34:34 -04: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: add notes to gitignore 2026-03-18 14:12:29 -04:00
Cargo.lock chore: release v0.2.2 2026-05-02 20:49:07 +00:00
Cargo.toml chore: release v0.2.2 2026-05-02 20:49:07 +00:00
flake.lock build: track flake.lock; remove TODO 2026-03-07 00:05:34 -05:00
flake.nix chore: release v0.2.2 2026-05-02 20:49:07 +00: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 fix: route releases through Forgejo PRs (#151) 2026-05-02 22:55:05 +00:00
rust-toolchain.toml build: add nix flake, rust toolchain, and rustfmt config 2026-03-07 00:05:07 -05: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://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

Release

Numbered releases are explicit maintainer actions from a clean, up-to-date main branch. First, prepare the release PR:

just release 0.2.3

The command bumps Cargo and Nix package metadata, regenerates manpages, runs CI, checks cargo publish --dry-run, commits the release on a release/v* branch, pushes that branch, and opens a Forgejo PR. After the PR merges, tag the merged main commit:

just release 0.2.3 --tag

Forgejo publishes crates.io and replaces the release assets from the tag workflow. Use just release 0.2.3 --dry-run to run the release checks without keeping a commit, branch, tag, or push.

Acknowledgements

  • @skewb1k - pull diagnostics deduplication fix