Use a more reliable method for getting an ID for a job
This commit is contained in:
parent
bdbf36991d
commit
b21ca4ed4e
@ -9,25 +9,19 @@
|
|||||||
" output: The array of lines for the output of the job.
|
" output: The array of lines for the output of the job.
|
||||||
let s:job_info_map = {}
|
let s:job_info_map = {}
|
||||||
|
|
||||||
|
function! ale#engine#ParseVim8ProcessID(job_string) abort
|
||||||
|
return matchstr(a:job_string, '\d\+') + 0
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! s:GetJobID(job) abort
|
function! s:GetJobID(job) abort
|
||||||
if has('nvim')
|
if has('nvim')
|
||||||
"In NeoVim, job values are just IDs.
|
"In NeoVim, job values are just IDs.
|
||||||
return a:job
|
return a:job
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" In Vim 8, the job is a special variable, and we open a channel for each
|
" For Vim 8, the job is a different variable type, and we can parse the
|
||||||
" job. We'll use the ID of the channel instead as the job ID.
|
" process ID from the string.
|
||||||
try
|
return ale#engine#ParseVim8ProcessID(string(a:job))
|
||||||
let l:channel_info = ch_info(job_getchannel(a:job))
|
|
||||||
|
|
||||||
if !empty(l:channel_info)
|
|
||||||
return l:channel_info.id
|
|
||||||
endif
|
|
||||||
catch
|
|
||||||
endtry
|
|
||||||
|
|
||||||
" If we fail to get the channel ID for a job, just return a 0 ID.
|
|
||||||
return 0
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! ale#engine#InitBufferInfo(buffer) abort
|
function! ale#engine#InitBufferInfo(buffer) abort
|
||||||
|
5
test/test_vim8_processid_parsing.vader
Normal file
5
test/test_vim8_processid_parsing.vader
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Execute(Vim8 Process ID parsing should work):
|
||||||
|
AssertEqual 123, ale#engine#ParseVim8ProcessID('process 123 run')
|
||||||
|
AssertEqual 347, ale#engine#ParseVim8ProcessID('process 347 failed')
|
||||||
|
AssertEqual 789, ale#engine#ParseVim8ProcessID('process 789 dead')
|
||||||
|
AssertEqual 0, ale#engine#ParseVim8ProcessID('no process')
|
Loading…
Reference in New Issue
Block a user