mirror of
https://github.com/dense-analysis/ale.git
synced 2026-02-14 22:21:52 +08:00
#517 - Get the Rust language server working in a basic way
This commit is contained in:
@@ -377,6 +377,12 @@ function! ale#linter#StartLSP(buffer, linter, callback) abort
|
||||
let l:address = ''
|
||||
let l:root = ale#util#GetFunction(a:linter.project_root_callback)(a:buffer)
|
||||
|
||||
if empty(l:root) && a:linter.lsp !=# 'tsserver'
|
||||
" If there's no project root, then we can't check files with LSP,
|
||||
" unless we are using tsserver, which doesn't use project roots.
|
||||
return {}
|
||||
endif
|
||||
|
||||
if a:linter.lsp ==# 'socket'
|
||||
let l:address = ale#linter#GetAddress(a:buffer, a:linter)
|
||||
let l:conn_id = ale#lsp#ConnectToAddress(
|
||||
|
||||
@@ -190,7 +190,13 @@ function! ale#lsp#HandleOtherInitializeResponses(conn, response) abort
|
||||
return
|
||||
endif
|
||||
|
||||
if get(a:response, 'method', '') ==# 'textDocument/publishDiagnostics'
|
||||
if get(a:response, 'method', '') ==# ''
|
||||
if has_key(get(a:response, 'result', {}), 'capabilities')
|
||||
for [l:dir, l:project] in l:uninitialized_projects
|
||||
call s:MarkProjectAsInitialized(a:conn, l:project)
|
||||
endfor
|
||||
endif
|
||||
elseif get(a:response, 'method', '') ==# 'textDocument/publishDiagnostics'
|
||||
let l:filename = ale#path#FromURI(a:response.params.uri)
|
||||
|
||||
for [l:dir, l:project] in l:uninitialized_projects
|
||||
@@ -237,7 +243,7 @@ function! s:HandleCommandMessage(job_id, message) abort
|
||||
endfunction
|
||||
|
||||
function! s:RegisterProject(conn, project_root) abort
|
||||
if !has_key(a:conn, a:project_root)
|
||||
if !has_key(a:conn.projects, a:project_root)
|
||||
" Tools without project roots are ready right away, like tsserver.
|
||||
let a:conn.projects[a:project_root] = {
|
||||
\ 'initialized': empty(a:project_root),
|
||||
|
||||
Reference in New Issue
Block a user