Lazy-load LSP linters, and check b:changedtick before notifying about changes

This commit is contained in:
w0rp
2018-06-15 09:53:13 +01:00
parent f1b72218c3
commit bda89506ba
15 changed files with 358 additions and 259 deletions

View File

@@ -15,12 +15,18 @@ Before:
let g:message_list = []
let g:Callback = ''
function! ale#linter#StartLSP(buffer, linter, callback) abort
function! ale#lsp_linter#StartLSP(buffer, linter, callback) abort
let g:Callback = a:callback
let l:conn = ale#lsp#NewConnection({})
let l:conn.id = 347
let l:conn.open_documents = {a:buffer : -1}
return {
\ 'buffer': a:buffer,
\ 'connection_id': 347,
\ 'project_root': '/foo/bar',
\ 'language_id': 'python',
\}
endfunction
@@ -43,6 +49,7 @@ After:
unlet! b:ale_linters
unlet! b:ale_tsserver_completion_names
call ale#lsp#RemoveConnectionWithID(347)
call ale#test#RestoreDirectory()
call ale#linter#Reset()

View File

@@ -34,12 +34,18 @@ Before:
\ })
let g:ale_linters = {'foobar': ['dummy_linter']}
function! ale#linter#StartLSP(buffer, linter, callback) abort
function! ale#lsp_linter#StartLSP(buffer, linter, callback) abort
let g:Callback = a:callback
let l:conn = ale#lsp#NewConnection({})
let l:conn.id = 347
let l:conn.open_documents = {a:buffer : -1}
return {
\ 'buffer': a:buffer,
\ 'connection_id': 347,
\ 'project_root': '/foo/bar',
\ 'language_id': 'foobar',
\}
endfunction
@@ -59,6 +65,7 @@ After:
delfunction LanguageCallback
delfunction ProjectRootCallback
call ale#lsp#RemoveConnectionWithID(347)
call ale#test#RestoreDirectory()
call ale#linter#Reset()

View File

@@ -11,7 +11,7 @@ After:
call ale#test#RestoreDirectory()
call ale#linter#Reset()
call ale#engine#ClearLSPData()
call ale#lsp_linter#ClearLSPData()
Given foobar(An empty file):
Execute(tsserver syntax error responses should be handled correctly):
@@ -21,7 +21,7 @@ Execute(tsserver syntax error responses should be handled correctly):
" When we get syntax errors and no semantic errors, we should keep the
" syntax errors.
call ale#engine#HandleLSPResponse(1, {
call ale#lsp_linter#HandleLSPResponse(1, {
\ 'seq': 0,
\ 'type': 'event',
\ 'event': 'syntaxDiag',
@@ -43,7 +43,7 @@ Execute(tsserver syntax error responses should be handled correctly):
\ ],
\ },
\})
call ale#engine#HandleLSPResponse(1, {
call ale#lsp_linter#HandleLSPResponse(1, {
\ 'seq': 0,
\ 'type': 'event',
\ 'event': 'semanticDiag',
@@ -71,7 +71,7 @@ Execute(tsserver syntax error responses should be handled correctly):
\ getloclist(0)
" After we get empty syntax errors, we should clear them.
call ale#engine#HandleLSPResponse(1, {
call ale#lsp_linter#HandleLSPResponse(1, {
\ 'seq': 0,
\ 'type': 'event',
\ 'event': 'syntaxDiag',
@@ -94,7 +94,7 @@ Execute(tsserver semantic error responses should be handled correctly):
" When we get syntax errors and no semantic errors, we should keep the
" syntax errors.
call ale#engine#HandleLSPResponse(1, {
call ale#lsp_linter#HandleLSPResponse(1, {
\ 'seq': 0,
\ 'type': 'event',
\ 'event': 'syntaxDiag',
@@ -104,7 +104,7 @@ Execute(tsserver semantic error responses should be handled correctly):
\ ],
\ },
\})
call ale#engine#HandleLSPResponse(1, {
call ale#lsp_linter#HandleLSPResponse(1, {
\ 'seq': 0,
\ 'type': 'event',
\ 'event': 'semanticDiag',
@@ -144,7 +144,7 @@ Execute(tsserver semantic error responses should be handled correctly):
\ getloclist(0)
" After we get empty syntax errors, we should clear them.
call ale#engine#HandleLSPResponse(1, {
call ale#lsp_linter#HandleLSPResponse(1, {
\ 'seq': 0,
\ 'type': 'event',
\ 'event': 'semanticDiag',
@@ -161,8 +161,8 @@ Execute(tsserver semantic error responses should be handled correctly):
\ getloclist(0)
Execute(LSP errors should be logged in the history):
call ale#engine#SetLSPLinterMap({'347': 'foobar'})
call ale#engine#HandleLSPResponse(347, {
call ale#lsp_linter#SetLSPLinterMap({'347': 'foobar'})
call ale#lsp_linter#HandleLSPResponse(347, {
\ 'jsonrpc': '2.0',
\ 'error': {
\ 'code': -32602,

View File

@@ -14,12 +14,18 @@ Before:
runtime autoload/ale/util.vim
runtime autoload/ale/preview.vim
function! ale#linter#StartLSP(buffer, linter, callback) abort
function! ale#lsp_linter#StartLSP(buffer, linter, callback) abort
let g:Callback = a:callback
let l:conn = ale#lsp#NewConnection({})
let l:conn.id = 347
let l:conn.open_documents = {a:buffer : -1}
return {
\ 'buffer': a:buffer,
\ 'connection_id': 347,
\ 'project_root': '/foo/bar',
\ 'language_id': 'python',
\}
endfunction
@@ -39,6 +45,7 @@ Before:
endfunction
After:
call ale#lsp#RemoveConnectionWithID(347)
call ale#references#SetMap({})
call ale#test#RestoreDirectory()
call ale#linter#Reset()

View File

@@ -11,12 +11,18 @@ Before:
runtime autoload/ale/lsp.vim
runtime autoload/ale/util.vim
function! ale#linter#StartLSP(buffer, linter, callback) abort
function! ale#lsp_linter#StartLSP(buffer, linter, callback) abort
let g:Callback = a:callback
let l:conn = ale#lsp#NewConnection({})
let l:conn.id = 347
let l:conn.open_documents = {a:buffer : -1}
return {
\ 'buffer': a:buffer,
\ 'connection_id': 347,
\ 'project_root': '/foo/bar',
\ 'language_id': 'python',
\}
endfunction
@@ -31,6 +37,7 @@ Before:
endfunction
After:
call ale#lsp#RemoveConnectionWithID(347)
call ale#definition#SetMap({})
call ale#test#RestoreDirectory()
call ale#linter#Reset()

View File

@@ -11,7 +11,7 @@ Before:
runtime autoload/ale/lsp.vim
runtime autoload/ale/util.vim
function! ale#linter#StartLSP(buffer, linter, callback) abort
function! ale#lsp_linter#StartLSP(buffer, linter, callback) abort
let g:Callback = a:callback
return {