SpaceVim
A modular Vim/Neovim configuration
Home | About | Quick start guide | Documentation | Development | Community | Sponsors | 中文
This layers adds extensive support for language-server-protocol. By default, this layer use following language server client implementations:
Note: All these features depend on the implementation of the language server, please check the list of Language Servers
To use this configuration layer, update your custom configuration file with:
[[layers]]
name = "lsp"
Ada
After installing AdaCore’s GNAT Studio, add the directory containing ada_language_server
to your PATH variable.
For instance, if the GNAT Studio 2020 was installed, ada_language_server
is present by default in
/opt/GNAT/2020/libexec/gnatstudio/als
.
Bash
npm i -g bash-language-server
JavaScript:
npm install -g javascript-typescript-langserver
Python:
pip install --user python-language-server
julia:
The LanguageServer
package must be installed in Julia (0.6 or greater), i.e.
julia> Pkg.clone("https://github.com/JuliaEditorSupport/LanguageServer.jl")
With new package system in Julia 0.7 and above, we have a package mode in Julia REPL.
in REPL, hit ]
to enter the package management mode, then add LanguageServer
to install the package.
PureScript
npm install -g purescript-language-server
Vue:
npm install vue-language-server -g
css:
npm install -g vscode-css-languageserver-bin
ruby:
gem install solargraph
Elm:
npm install -g @elm-tooling/elm-language-server
npm install -g elm elm-test elm-format
vim
npm install -g vim-language-server
>=0.5.0
)If you are using nvim(>=0.5.0)
. You need to use enabled_clients
to specific the language servers.
for example:
[[layers]]
name = 'lsp'
enabled_clients = ['vimls', 'clangd']
To override the command of client, you may need to use override_client_cmds
option:
[[layers]]
name = "lsp"
enabled_clients = ['vimls', 'clangd']
[layers.override_client_cmds]
vimls = ["vim-language-server", "--stdio"]
<0.5.0
)To enable lsp support for a specified filetype, you may need to load this layer with filetypes
option, for example:
[[layers]]
name = "lsp"
filetypes = [
"rust",
"javascript"
]
default language server commands:
language | server command |
---|---|
ada |
['ada_language_server'] |
c |
['clangd'] |
cpp |
['clangd'] |
crystal |
['scry'] |
css |
['css-languageserver', '--stdio'] |
dart |
['dart_language_server'] |
elm |
['elm-language-server'] |
go |
['gopls'] |
haskell |
['hie', '--lsp'] |
html |
['html-languageserver', '--stdio'] |
javascript |
['typescript-language-server', '--stdio'] |
javascriptreact |
['typescript-language-server', '--stdio'] |
julia |
['julia', '--startup-file=no', '--history-file=no', '-e', 'using LanguageServer; server = LanguageServer.LanguageServerInstance(STDIN, STDOUT, false); server.runlinter = true; run(server);'] |
objc |
['clangd'] |
objcpp |
['clangd'] |
php |
['php', 'path/to/bin/php-language-server.php'] |
purescript |
['purescript-language-server', '--stdio'] |
python |
['pyls'] |
ruby |
['solargraph', 'stdio'] |
reason |
['ocaml-language-server'] |
rust |
['rustup', 'run', 'nightly', 'rls'] |
sh |
['bash-language-server', 'start'] |
typescript |
['typescript-language-server', '--stdio'] |
typescriptreact |
['typescript-language-server', '--stdio'] |
vim |
['vim-language-server', '--stdio'] |
vue |
['vls'] |
To override the server command, you may need to use override_cmd
option:
[[layers]]
name = "lsp"
filetypes = [
"rust",
"javascript"
]
[layers.override_cmd]
rust = ["rustup", "run", "nightly", "rls"]
Key Binding | Description |
---|---|
K / SPC l d |
show document |
SPC l e |
rename symbol |
if the checkers layer is not loaded, these key bindings will be added:
Key | description |
---|---|
SPC e c |
clear errors |
SPC e n |
jump to the position of next error |
SPC e N |
jump to the position of previous error |
SPC e p |
jump to the position of previous error |
SPC e l |
display a list of all the errors |
SPC e L |
display a list of all the errors and focus the errors buffer |
Powered by Jekyll