Move edit sentinel removal out of resume handler

Enable using this function in cases other than pausing for edit.
This commit is contained in:
Tim Pope
2021-03-28 14:41:52 -04:00
parent f4acdcc5b4
commit 112310c026

View File

@@ -2411,10 +2411,11 @@ endfunction
function! s:RunEdit(state, tmp, 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 sentinel = a:state.file . '.edit'
let file = FugitiveVimPath(readfile(sentinel, 1)[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:tmp, a:job] let s:edit_jobs[bufnr('')] = [a:state, a:tmp, a:job, sentinel]
call fugitive#ReloadStatus(a:state.dir, 1) call fugitive#ReloadStatus(a:state.dir, 1)
return 1 return 1
endif endif
@@ -2514,7 +2515,10 @@ 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, tmp, job) abort function! s:RunWait(state, tmp, job, ...) abort
if a:0 && filereadable(a:1)
call delete(a:1)
endif
let finished = 0 let finished = 0
try try
while get(a:state, 'request', '') !=# 'edit' && s:RunTick(a:job) while get(a:state, 'request', '') !=# 'edit' && s:RunTick(a:job)
@@ -2572,18 +2576,15 @@ 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, tmp, job] = remove(s:resume_queue, 0) call call('s:RunWait', remove(s:resume_queue, 0))
if filereadable(state.file . '.edit')
call delete(state.file . '.edit')
endif
call s:RunWait(state, tmp, job)
endwhile endwhile
endfunction endfunction
function! s:RunBufDelete(bufnr) abort function! s:RunBufDelete(bufnr) abort
if has_key(s:edit_jobs, a:bufnr) | if has_key(s:edit_jobs, a:bufnr) |
call add(s:resume_queue, remove(s:edit_jobs, a:bufnr)) call add(s:resume_queue, remove(s:edit_jobs, a:bufnr))
call feedkeys(":redraw!|call fugitive#Resume()|silent checktime\r", 'n') call feedkeys(":redraw!|call delete(" . string(s:resume_queue[-1][0].file . '.edit') .
\ ")|call fugitive#Resume()|silent checktime\r", 'n')
endif endif
endfunction endfunction