mirror of
https://github.com/airblade/vim-gitgutter.git
synced 2025-11-10 12:33:47 -05:00
Handle buffers which have since been closed in async callbacks.
This commit is contained in:
@@ -80,8 +80,10 @@ endfunction
|
|||||||
function! gitgutter#async#handle_diff_job_nvim(job_id, data, event) abort
|
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)
|
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()
|
let current_buffer = gitgutter#utility#bufnr()
|
||||||
call gitgutter#utility#set_buffer(self.buffer)
|
call gitgutter#utility#set_buffer(job_bufnr)
|
||||||
|
|
||||||
if a:event == 'stdout'
|
if a:event == 'stdout'
|
||||||
" a:data is a list
|
" a:data is a list
|
||||||
@@ -103,6 +105,9 @@ function! gitgutter#async#handle_diff_job_nvim(job_id, data, event) abort
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
call gitgutter#utility#set_buffer(current_buffer)
|
call gitgutter#utility#set_buffer(current_buffer)
|
||||||
|
else
|
||||||
|
call s:job_finished(a:job_id)
|
||||||
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
@@ -117,14 +122,17 @@ function! gitgutter#async#handle_diff_job_vim_close(channel) abort
|
|||||||
call gitgutter#debug#log('channel: '.a:channel)
|
call gitgutter#debug#log('channel: '.a:channel)
|
||||||
|
|
||||||
let channel_id = s:channel_id(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()
|
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 gitgutter#handle_diff(s:job_output(channel_id))
|
||||||
call s:job_finished(channel_id)
|
|
||||||
|
|
||||||
call gitgutter#utility#set_buffer(current_buffer)
|
call gitgutter#utility#set_buffer(current_buffer)
|
||||||
|
endif
|
||||||
|
call s:job_finished(channel_id)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user