Skip to content

barrettruth/vimdoc-language-server

Repository files navigation

vimdoc-language-server

Language server for vim help files.

vimdoc-language-server-preview-v0.1.0.mp4

Installation

Cargo

cargo install vimdoc-language-server

Nix

nix run github:barrettruth/vimdoc-language-server

From source

git clone https://github.com/barrettruth/vimdoc-language-server
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