async: fix small problems with dirty jobs

This commit is contained in:
Christian Brabandt 2019-05-02 07:57:10 +02:00
parent 2db882e9b8
commit cc8f47e248
No known key found for this signature in database
GPG Key ID: F3F92DA383FDDE09

View File

@ -73,12 +73,19 @@ function! s:set_clean_variables(file, vcs)
endif endif
endfunction endfunction
function! s:set_clean_jobs_variable(vcs, file, id)
if !has_key(s:clean_jobs, a:vcs)
let s:clean_jobs[a:vcs] = {}
endif
let s:clean_jobs[a:vcs][a:file]=a:id
endfunction
function! s:on_exit_clean(...) dict abort function! s:on_exit_clean(...) dict abort
let buf=self.buf let buf=self.buf
if !empty(buf) if !empty(buf)
call s:set_clean_variables(self.file, self.vcs) call s:set_clean_variables(self.file, self.vcs)
endif endif
if has_key(get(s:clean_jobs, 'self.vcs', {}), self.file) if has_key(get(s:clean_jobs, self.vcs, {}), self.file)
call remove(s:clean_jobs[self.vcs], self.file) call remove(s:clean_jobs[self.vcs], self.file)
endif endif
endfunction endfunction
@ -186,7 +193,7 @@ if v:version >= 800 && has("job")
\ 'err_io': 'null', \ 'err_io': 'null',
\ 'out_cb': function('s:on_stdout', options), \ 'out_cb': function('s:on_stdout', options),
\ 'close_cb': function('s:on_exit_clean', options)}) \ 'close_cb': function('s:on_exit_clean', options)})
let jobs[a:file] = id call s:set_clean_jobs_variable(a:vcs, a:file, id)
endfunction endfunction
function! airline#async#vim_vcs_untracked(config, file) function! airline#async#vim_vcs_untracked(config, file)
@ -309,7 +316,7 @@ elseif has("nvim")
call remove(s:clean_jobs[a:vcs], a:file) call remove(s:clean_jobs[a:vcs], a:file)
endif endif
let id = jobstart(cmd, config) let id = jobstart(cmd, config)
let s:clean_jobs[a:vcs][a:file] = id call s:set_clean_jobs_variable(a:vcs, a:file, id)
endfunction endfunction
endif endif