diff --git a/autoload/gitgutter/hunk.vim b/autoload/gitgutter/hunk.vim index 0723bc5..2404f08 100644 --- a/autoload/gitgutter/hunk.vim +++ b/autoload/gitgutter/hunk.vim @@ -1,4 +1,5 @@ let s:winid = 0 +let s:preview_bufnr = 0 let s:nomodeline = (v:version > 703 || (v:version == 703 && has('patch442'))) ? '' : '' function! gitgutter#hunk#set_hunks(bufnr, hunks) abort @@ -442,7 +443,11 @@ function! s:open_hunk_preview_window() if !&previewwindow noautocmd execute g:gitgutter_preview_win_location &previewheight 'new gitgutter://hunk-preview' doautocmd WinEnter - let s:winid = win_getid() + if exists('*win_getid') + let s:winid = win_getid() + else + let s:preview_bufnr = bufnr('') + endif set previewwindow setlocal filetype=diff buftype=acwrite bufhidden=delete " Reset some defaults in case someone else has changed them. @@ -511,7 +516,8 @@ endfunction function! s:enable_staging_from_hunk_preview_window() augroup gitgutter_hunk_preview autocmd! - execute 'autocmd BufWriteCmd GitGutterStageHunk' + let bufnr = s:winid != 0 ? winbufnr(s:winid) : s:preview_bufnr + execute 'autocmd BufWriteCmd GitGutterStageHunk' augroup END endfunction @@ -523,7 +529,8 @@ endfunction function! s:close_hunk_preview_window() - call setbufvar(winbufnr(s:winid), '&modified', 0) + let bufnr = s:winid != 0 ? winbufnr(s:winid) : s:preview_bufnr + call setbufvar(bufnr, '&modified', 0) if g:gitgutter_preview_win_floating if win_id2win(s:winid) > 0 @@ -534,4 +541,5 @@ function! s:close_hunk_preview_window() endif let s:winid = 0 + let s:preview_bufnr = 0 endfunction