Handle buffers which have since been closed in async callbacks.

This commit is contained in:
Andy Stewart
2016-09-13 16:11:42 +01:00
parent efa1ead770
commit 373ad7337b

View File

@@ -80,8 +80,10 @@ endfunction
function! gitgutter#async#handle_diff_job_nvim(job_id, data, event) abort
call gitgutter#debug#log('job_id: '.a:job_id.', event: '.a:event.', buffer: '.self.buffer)
let job_bufnr = self.buffer
if bufexists(job_bufnr)
let current_buffer = gitgutter#utility#bufnr()
call gitgutter#utility#set_buffer(self.buffer)
call gitgutter#utility#set_buffer(job_bufnr)
if a:event == 'stdout'
" a:data is a list
@@ -103,6 +105,9 @@ function! gitgutter#async#handle_diff_job_nvim(job_id, data, event) abort
endif
call gitgutter#utility#set_buffer(current_buffer)
else
call s:job_finished(a:job_id)
endif
endfunction
@@ -117,14 +122,17 @@ function! gitgutter#async#handle_diff_job_vim_close(channel) abort
call gitgutter#debug#log('channel: '.a:channel)
let channel_id = s:channel_id(a:channel)
let job_bufnr = s:job_buffer(channel_id)
if bufexists(job_bufnr)
let current_buffer = gitgutter#utility#bufnr()
call gitgutter#utility#set_buffer(s:job_buffer(channel_id))
call gitgutter#utility#set_buffer(job_bufnr)
call gitgutter#handle_diff(s:job_output(channel_id))
call s:job_finished(channel_id)
call gitgutter#utility#set_buffer(current_buffer)
endif
call s:job_finished(channel_id)
endfunction