Fix rust rls linter toolchain argument

This removes the argument if the specified toolchain is empty.
As far as I can tell there is no +nighly (or similar) option [1] leading to
the termination of the server. But since people needed this option and
have yet to complain about it it stays the default for now.

[1] https://github.com/rust-lang-nursery/rls/blob/master/src/main.rs#L87
This commit is contained in:
eyenseo 2018-04-12 20:42:38 +02:00
parent f064ba48f5
commit 6c93cded64
2 changed files with 12 additions and 2 deletions

View file

@ -12,8 +12,11 @@ function! ale_linters#rust#rls#GetCommand(buffer) abort
let l:executable = ale_linters#rust#rls#GetExecutable(a:buffer)
let l:toolchain = ale#Var(a:buffer, 'rust_rls_toolchain')
return ale#Escape(l:executable)
\ . ' +' . ale#Escape(l:toolchain)
if empty(l:toolchain)
return ale#Escape(l:executable)
else
return ale#Escape(l:executable) . ' +' . ale#Escape(l:toolchain)
endif
endfunction
function! ale_linters#rust#rls#GetLanguage(buffer) abort

View file

@ -28,6 +28,13 @@ Execute(The toolchain should be configurable):
\ ale#Escape('rls') . ' +' . ale#Escape('stable'),
\ ale_linters#rust#rls#GetCommand(bufnr(''))
Execute(The toolchain should be ommitted if not given):
let g:ale_rust_rls_toolchain = ''
AssertEqual
\ ale#Escape('rls'),
\ ale_linters#rust#rls#GetCommand(bufnr(''))
Execute(The language string should be correct):
AssertEqual 'rust', ale_linters#rust#rls#GetLanguage(bufnr(''))