Pass private job state to s:RunWait()

This commit is contained in:
Tim Pope
2021-03-21 11:18:35 -04:00
parent 9103a738c7
commit 64a3f99d03

View File

@@ -2367,13 +2367,13 @@ function! s:RunFinished(state) abort
call fugitive#ReloadStatus(a:state.dir, 1) call fugitive#ReloadStatus(a:state.dir, 1)
endfunction endfunction
function! s:RunEdit(state, job) abort function! s:RunEdit(state, tmp, job) abort
if get(a:state, 'request', '') == 'edit' if get(a:state, 'request', '') == 'edit'
call remove(a:state, 'request') call remove(a:state, 'request')
let file = FugitiveVimPath(readfile(a:state.file . '.edit')[0]) let file = FugitiveVimPath(readfile(a:state.file . '.edit')[0])
exe substitute(a:state.mods, '\<tab\>', '-tab', 'g') 'keepalt split' s:fnameescape(file) exe substitute(a:state.mods, '\<tab\>', '-tab', 'g') 'keepalt split' s:fnameescape(file)
set bufhidden=wipe set bufhidden=wipe
let s:edit_jobs[bufnr('')] = [a:state, a:job] let s:edit_jobs[bufnr('')] = [a:state, a:tmp, a:job]
call fugitive#ReloadStatus(a:state.dir, 1) call fugitive#ReloadStatus(a:state.dir, 1)
return 1 return 1
endif endif
@@ -2437,7 +2437,7 @@ endfunction
if !exists('s:edit_jobs') if !exists('s:edit_jobs')
let s:edit_jobs = {} let s:edit_jobs = {}
endif endif
function! s:RunWait(state, job) abort function! s:RunWait(state, tmp, job) abort
let finished = 0 let finished = 0
try try
while get(a:state, 'request', '') !=# 'edit' && (type(a:job) == type(0) ? jobwait([a:job], 1)[0] == -1 : ch_status(a:job) !=# 'closed' || job_status(a:job) ==# 'run') while get(a:state, 'request', '') !=# 'edit' && (type(a:job) == type(0) ? jobwait([a:job], 1)[0] == -1 : ch_status(a:job) !=# 'closed' || job_status(a:job) ==# 'run')
@@ -2467,7 +2467,7 @@ function! s:RunWait(state, job) abort
endwhile endwhile
sleep 1m sleep 1m
echo echo
call s:RunEdit(a:state, a:job) call s:RunEdit(a:state, a:tmp, a:job)
let finished = 1 let finished = 1
finally finally
if !finished if !finished
@@ -2491,11 +2491,11 @@ if !exists('s:resume_queue')
endif endif
function! fugitive#Resume() abort function! fugitive#Resume() abort
while len(s:resume_queue) while len(s:resume_queue)
let [state, job] = remove(s:resume_queue, 0) let [state, tmp, job] = remove(s:resume_queue, 0)
if filereadable(state.file . '.edit') if filereadable(state.file . '.edit')
call delete(state.file . '.edit') call delete(state.file . '.edit')
endif endif
call s:RunWait(state, job) call s:RunWait(state, tmp, job)
endwhile endwhile
endfunction endfunction
@@ -2715,7 +2715,7 @@ function! fugitive#Command(line1, line2, range, bang, mods, arg) abort
\ })) \ }))
endif endif
let state.job = job let state.job = job
call s:RunWait(state, job) call s:RunWait(state, tmp, job)
return 'silent checktime' . after return 'silent checktime' . after
elseif pager is# 1 elseif pager is# 1
let pre = s:BuildEnvPrefix(env) let pre = s:BuildEnvPrefix(env)