Language servers provide autocompletion and other handy features. They are often extremely fiddly to get working, unfortunately.
Here's an example of the best-case scenario, where you can just install a language server and it works out of the box:
install:
npm:
- vim-language-server
lsp:
start: |
vim-language-server --stdio
code: "TODO"
item: "TODO"
Unfortunately it's usually not quite so easy, which is why we have various configuration options (check existing languages for usage examples):
setup
: Shell command to run to set up language server caches or whatever. This happens beforestart
, once.disableDynamicRegistration
: By default language server client "features" are registered one at a time with the server. Some servers are buggy and don't support the protocol correctly, which means setting this key to true may fix the problem.init
,config
: Two different ways of sending an arbitrary configuration blob to the language server. Sometimes a language server will need one or the other of them to be set to some particular value "because that's what VSCode does", or it won't work properly.lang
: For some reason the client sends its impression of what language the current file is in to the server. This really shouldn't make a difference, but sometimes servers will barf if the magic string isn't quite right. In that case you can override it with thelang
key.code
,after
,item
: These are used in the test suite (see later).