kota's memex

lsp clients

An LSP client transmits data with an LSP server. Some LSP clients will automatically install LSP servers for different languages, not all LSP clients and servers fully support the LSP spec. Neovim has a built-in lsp client, but it's very new and pretty minimal. LSP generally allows for features like go-to-definition, find-references, hover, completion, rename, format, refactor, etc., using semantic whole-project analysis. The specifics depend on the server, client, and language.

nvim lsp

Neovim now has built-in lsp support. It's still a fairly new feature so it can be a little rough around the edges, but it's already faster and lighter than the old lsp plugins.

old vim/neovim lsp clients

https://github.com/Shougo/deoplete.nvim

Deoplete is the successor of other similar neovim/vim8 completion plugins. It doesn't do much by default. You need to install sources, one of which is an LSP client. It can also do completion simply based on words typed in file already.

https://github.com/deoplete-plugins/deoplete-lsp

https://github.com/neoclide/coc.nvim

Coc is basically a port of the VSCode language server code. Like it literally runs node in the background and everything. It's pretty slow, jank, and doesn't play too well with others, but it supports every possible LSP featuer and them some. You just install coc plugins for each language you want and it'll download, compile and setup the language server without really any work on your part.

https://github.com/ycm-core/YouCompleteMe

Kinda like an older version of coc. It works with vim (rather than just nvim), and uses a mix of LSP client/server support and older syntastic style external command stuff.

https://github.com/vim-syntastic/syntastic

Much older than LSP, syntastic basically can run external commands on your file, which can detect common syntax errors. These can then be printed in the sidebar. Pretty useful, but better alternatives exist now.