summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoload/ale/engine.vim15
-rw-r--r--autoload/ale/lsp.vim7
2 files changed, 19 insertions, 3 deletions
diff --git a/autoload/ale/engine.vim b/autoload/ale/engine.vim
index d15ab901..1643f86b 100644
--- a/autoload/ale/engine.vim
+++ b/autoload/ale/engine.vim
@@ -538,9 +538,22 @@ function! s:CheckWithTSServer(buffer, linter, executable) abort
let l:open_documents = l:info.open_lsp_documents
let l:is_open = index(l:open_documents, a:linter.name) >= 0
- call ale#lsp#StartProgram(a:executable, a:executable, function('s:HandleLSPResponse'))
+ let l:command = ale#job#PrepareCommand(a:executable)
+ let l:job_id = ale#lsp#StartProgram(a:executable, l:command, function('s:HandleLSPResponse'))
+
+ if !l:job_id
+ if g:ale_history_enabled
+ call ale#history#Add(a:buffer, 'failed', l:job_id, l:command)
+ endif
+
+ return
+ endif
if !l:is_open
+ if g:ale_history_enabled
+ call ale#history#Add(a:buffer, 'started', l:job_id, l:command)
+ endif
+
call add(l:open_documents, a:linter.name)
call ale#lsp#SendMessageToProgram(
\ a:executable,
diff --git a/autoload/ale/lsp.vim b/autoload/ale/lsp.vim
index 449aa304..ce7efd1e 100644
--- a/autoload/ale/lsp.vim
+++ b/autoload/ale/lsp.vim
@@ -162,6 +162,9 @@ function! s:HandleCommandMessage(job_id, message) abort
endfunction
" Start a program for LSP servers which run with executables.
+"
+" The job ID will be returned for for the program if it ran, otherwise
+" 0 will be returned.
function! ale#lsp#StartProgram(executable, command, callback) abort
if !executable(a:executable)
return 0
@@ -179,7 +182,7 @@ function! ale#lsp#StartProgram(executable, command, callback) abort
\ 'mode': 'raw',
\ 'out_cb': function('s:HandleCommandMessage'),
\}
- let l:job_id = ale#job#Start(ale#job#PrepareCommand(a:command), l:options)
+ let l:job_id = ale#job#Start(a:command, l:options)
else
let l:job_id = l:conn.job_id
endif
@@ -190,7 +193,7 @@ function! ale#lsp#StartProgram(executable, command, callback) abort
let l:conn.job_id = l:job_id
- return 1
+ return l:job_id
endfunction
" Send a message to a server with a given executable, and a command for