Thank you!
- Neovim :P
- Documentation is generated by
scripts/docgen.lua.- Only works on unix, you can ignore it on Windows.
- Lint task requires luacheck.
PRs are checked with Luacheck. To run the linter locally:
make lint
Note: Github Actions automatically generates the docs, so only modify
README_template.mdor thedocsobject on the server config. Don't modifyREADME.mddirectly.
To preview the generated README.md locally, run scripts/docgen.lua from
nvim (from the project root):
nvim -R -Es +'set rtp+=$PWD' +'luafile scripts/docgen.lua'
The configs module is a singleton where configs are defined. In vim.validate
parlance here is the "spec":
configs.SERVER_NAME = {
default_config = {'t'};
on_new_config = {'f', true};
on_attach = {'f', true};
commands = {'t', true};
docs = {'t', true};
}
docs = {
description = {'s', true};
default_config = {'t', true};
}
- Keys in
docs.default_configmatch those ofconfigs.SERVER_NAME.default_config, and can be used to specify custom documentation. This is useful for functions, whose docs cannot be easily auto-generated. commandsis a map ofname:definitionkey:value pairs, wheredefinitionis a list whose first value is a function implementing the command and the rest are either array values which will be formed into flags for the command or special keys likedescription. Example:commands = { TexlabBuild = { function() buf_build(0) end; "-range"; description = "Build the current buffer"; }; };
The configs.__newindex metamethod consumes the config definition and returns
an object with a setup() method, to be invoked by users:
require'nvim_lsp'.SERVER_NAME.setup{}
After you set configs.SERVER_NAME you can add arbitrary language-specific
functions to it if necessary.
Example:
configs.texlab.buf_build = buf_build
Configs may optionally provide install() and install_info() functions which
are discovered by :LspInstall and :LspInstallInfo. Function
util.npm_installer() can be used fornpm-installable language servers. See
elmls.lua, tsserver.lua, bashls.lua for examples.
Note we are considering removing the auto-install concept (#334). Instead, each config should document key installation details:
- URL to download the server
- URL to documentation explaining how to install the server
- Brief instructions that user can copy/paste into their shell to install via common package managers such as apt-get/homebrew.