Fork me on GitHub

SpaceVim

A community-driven vim distribution


Home | About | Documentation | Development | Community | Sponsors


SpaceVim Layers: lsp

Description

This layers adds extensive support for language-server-protocol, This layer is a heavy wallpaper of LanguageClient-neovim (an old fork), The upstream is rewritten by rust.

we also want to include vim-lsp, which is wrote in pure vim script.

the neovim team is going to implement the build-in LSP support, the PR is neovim#6856. and the author of this PR create another plugin tjdevries/nvim-langserver-shim

SpaceVim should works well in different version of vim/neovim, so in the features, the logic of this layer should be:

if has('nvim')
  " use neovim build-in lsp
elseif has('python3')
  " use LanguageClient-neovim
else
  " use vim-lsp
endif

Features

Note: All these features dependent on the implementation of the language server, please check the list of Language Servers

Install

To use this configuration layer, add call SpaceVim#layers#load('lsp') to your custom configuration file.

Install language server

JavaScript:

npm install -g javascript-typescript-langserver

Python:

pip install --user python-language-server

Configuration

To enable lsp support for a specified filetype, you may need to load this layer with filtypes option, for example:

call SpaceVim#layers#load('lsp',
    \ {
    \ 'filetypes' : ['rust',
                   \ 'typescript',
                   \ 'javascript',
                   \ ],
    \ }

default language server commands:

language server command
javascript ['javascript-typescript-stdio']
haskell ['hie', '--lsp']
c ['clangd']
cpp ['clangd']
objc ['clangd']
objcpp ['clangd']
dart ['dart_language_server']
go ['go-langserver', '-mode', 'stdio']
rust ['rustup', 'run', 'nightly', 'rls']
python ['pyls']
php ['php', 'path/to/bin/php-language-server.php']

To override the server command, you may need to use override_cmd option:

call SpaceVim#layers#load('lsp',
    \ {
    \ 'override_cmd' : {
                     \ 'rust' : ['rustup', 'run', 'nightly', 'rls'],
                     \ }
    \ }

Key bindings

Key Binding Description
K / SPC l d show document
SPC l e rename symbol

Hosted on GitHub, Help improve this page — Theme by mattgraham,