Language Server Protocol (LSP) support for vim and neovim.
Clone or download
ficoos and autozimu Use denite in contextMenu
When using denite for the context menu, the actions should be opened
in denite.
Latest commit 12a1f60 Dec 3, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Switch default Makefile target to release. Nov 13, 2018
.github Update link. Aug 2, 2018
.vim Update rls settings. Aug 27, 2018
.vscode Optimize for horizontal move. Apr 17, 2018
autoload Make LanguageClient_runSync reentrant Dec 10, 2018
bin Try release macOS on CircleCI. Mar 29, 2018
ci Upgrade neovim in CI. Nov 8, 2018
doc Trigger server start and textDocument/didOpen on FileType autocmd event. Nov 12, 2018
plugin Trigger server start and textDocument/didOpen on FileType autocmd event. Nov 12, 2018
rplugin/python3 Use denite in contextMenu Dec 12, 2018
src Fix completion where text_edit is supplied Dec 4, 2018
tests Keep compatible. Sep 14, 2018
.gitignore Simplify passing commands. Jul 21, 2018
.travis.yml Remove bsd from cross build target. Nov 13, 2018
Cargo.lock (cargo-release) version 0.1.132 Dec 10, 2018
Cargo.toml (cargo-release) version 0.1.132 Dec 10, 2018 Add pre-built binary support for armv7* and armv8* targets Sep 6, 2018
LICENSE.txt Update License to cover contributors. Oct 10, 2017
Makefile Add prefix to echoed messages. Nov 21, 2018 Fix typos Sep 12, 2018 Simplify handling of non-empty buftype and empty filetype. Nov 11, 2018 Revert "Get proper git SHA when TRAVIS_COMMIT is not available." Sep 4, 2018
install.ps1 (cargo-release) version 0.1.132 Dec 10, 2018 (cargo-release) version 0.1.132 Dec 10, 2018
min-vimrc.vim Make example config more compatible. Nov 14, 2018

For legacy python implementation, see branch master.



Language Server Protocol (LSP) support for vim and neovim.


More recordings at Updates, screenshots & GIFs.


Quick Start

Using vim-plug:

Plug 'autozimu/LanguageClient-neovim', {
    \ 'branch': 'next',
    \ 'do': 'bash',
    \ }

" (Optional) Multi-entry selection UI.
Plug 'junegunn/fzf'

Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }

Example configuration

" Required for operations modifying multiple buffers like rename.
set hidden

let g:LanguageClient_serverCommands = {
    \ 'rust': ['~/.cargo/bin/rustup', 'run', 'stable', 'rls'],
    \ 'javascript': ['/usr/local/bin/javascript-typescript-stdio'],
    \ 'javascript.jsx': ['tcp://'],
    \ 'python': ['/usr/local/bin/pyls'],
    \ }

nnoremap <F5> :call LanguageClient_contextMenu()<CR>
" Or map each action separately
nnoremap <silent> K :call LanguageClient#textDocument_hover()<CR>
nnoremap <silent> gd :call LanguageClient#textDocument_definition()<CR>
nnoremap <silent> <F2> :call LanguageClient#textDocument_rename()<CR>

Run command nvim +PlugInstall +UpdateRemotePlugins +qa in shell to install this plugin. Install corresponding language servers. Restart neovim/vim and language services will be available right away. Happy hacking!





Language Servers

Please see and/or


:help LanguageClient for full list of configurations, commands and functions.




The MIT License.