Skip to content

Latest commit

 

History

History
42 lines (36 loc) · 1.53 KB

lsp.md

File metadata and controls

42 lines (36 loc) · 1.53 KB

Tutorial: add a language server

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 before start, 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 the lang key.
  • code, after, item: These are used in the test suite (see later).