wiki:Tools/LanguageServer

The Language Server Protocol

The Language Server Protocol is an open source effort go generalize a code-completion and linting as a JSON-based client-server protocol, originally developed for MS Visual Studio Code (which is a Nodejs crap)

The standalone language servers, however, could be used very successfully with classic and sane Vim and Emacs.

Since this is a cross-community effort, due to the law of big numbers, these servers (and, hopefully, corresponding clients form Vim and Emacs) would eventually win (and become a usual Java/JS crapware with hundreds of low-quality dependencies).

For now there are servers for Java, Dotty, Go, Clang, etc.

Use these. It makes developments less pain and does not require to load a few gigabytes of fucking crap like Eclipse, IntelliJ or VSCode.

Tooling

Emacs

(package-install 'lsp-more)
(package-install 'lsp-ui)

Client for neovim

cd ~/.local/share/nvim/plugged/
git clone git://github.com/autozimu/LanguageClient-neovim.git
cd LanguageClient-neovim
cargo install --force

in ~/.config/nvim/init.vim

let g:LanguageClient_autoStart = 1
let g:LanguageClient_serverCommands = {
    \ 'c': ['clangd'],
    \ 'cpp': ['clangd'],
    \ 'go': ['go-langserver'],
    \ 'python': ['pyls'],
    \ 'haskell': ['hie-wrapper'],
    \ 'rust': ['rls'],
    \ 'javascript': ['javascript-typescript-stdio'],
    \ 'typescript': ['javascript-typescript-stdio'],
    \ 'scala': ['node', '/usr/local/bin/sbt-server-stdio.js'],
    \ 'java': ['/usr/local/bin/jdt-language-server.sh']
    \ }
Last modified 16 months ago Last modified on Nov 2, 2018, 7:13:31 AM
Note: See TracWiki for help on using the wiki.