Add lsp_config support for rls (#2332)

* Add lsp_config for rls
* Add working config example and test
This commit is contained in:
Nathan Henrie 2019-03-05 02:09:29 -07:00 committed by w0rp
parent c4328f2a31
commit e5746d9a83
3 changed files with 21 additions and 0 deletions

View file

@ -3,6 +3,7 @@
call ale#Set('rust_rls_executable', 'rls')
call ale#Set('rust_rls_toolchain', 'nightly')
call ale#Set('rust_rls_config', {})
function! ale_linters#rust#rls#GetCommand(buffer) abort
let l:toolchain = ale#Var(a:buffer, 'rust_rls_toolchain')
@ -19,6 +20,7 @@ endfunction
call ale#linter#Define('rust', {
\ 'name': 'rls',
\ 'lsp': 'stdio',
\ 'lsp_config': {b -> ale#Var(b, 'rust_rls_config')},
\ 'executable': {b -> ale#Var(b, 'rust_rls_executable')},
\ 'command': function('ale_linters#rust#rls#GetCommand'),
\ 'project_root': function('ale_linters#rust#rls#GetProjectRoot'),

View file

@ -172,6 +172,20 @@ g:ale_rust_rls_toolchain *g:ale_rust_rls_toolchain*
The `rls` server will only be started once per executable.
g:ale_rust_rls_config *g:ale_rust_rls_config*
*b:ale_rust_rls_config*
Type: |Dictionary|
Default: `{}`
Dictionary with configuration settings for rls. For example, to force
using clippy as linter: >
{
\ 'rust': {
\ 'clippy_preference': 'on'
\ }
\ }
===============================================================================
rustc *ale-rust-rustc*

View file

@ -23,3 +23,8 @@ Execute(The project root should be detected correctly):
call ale#test#SetFilename('rust-rls-project/test.rs')
AssertLSPProject ale#path#Simplify(g:dir . '/rust-rls-project')
Execute(Should accept configuration settings):
AssertLSPConfig {}
let b:ale_rust_rls_config = {'rust': {'clippy_preference': 'on'}}
AssertLSPConfig {'rust': {'clippy_preference': 'on'}}