Expose is-open and close hunk-preview-window functions

This allows custom maps for closing the hunk preview window.

See #784.
This commit is contained in:
Andy Stewart
2021-06-02 11:49:42 +01:00
parent d13d58a35f
commit 5b4ec87517
2 changed files with 14 additions and 8 deletions

View File

@@ -64,7 +64,7 @@ function! gitgutter#hunk#next_hunk(count) abort
if g:gitgutter_show_msg_on_hunk_jumping
redraw | echo printf('Hunk %d of %d', index(hunks, hunk) + 1, len(hunks))
endif
if s:is_preview_window_open()
if gitgutter#hunk#is_preview_window_open()
call gitgutter#hunk#preview()
endif
return
@@ -95,7 +95,7 @@ function! gitgutter#hunk#prev_hunk(count) abort
if g:gitgutter_show_msg_on_hunk_jumping
redraw | echo printf('Hunk %d of %d', index(hunks, hunk) + 1, len(hunks))
endif
if s:is_preview_window_open()
if gitgutter#hunk#is_preview_window_open()
call gitgutter#hunk#preview()
endif
return
@@ -249,7 +249,7 @@ function! s:hunk_op(op, ...)
let hunk_diff = join(hunk_header + hunk_body, "\n")."\n"
call s:goto_original_window()
call s:close_hunk_preview_window()
call gitgutter#hunk#close_hunk_preview_window()
call s:stage(hunk_diff)
endif
@@ -427,7 +427,7 @@ endfunction
function! s:open_hunk_preview_window()
if g:gitgutter_preview_win_floating
if exists('*nvim_open_win')
call s:close_hunk_preview_window()
call gitgutter#hunk#close_hunk_preview_window()
let buf = nvim_create_buf(v:false, v:false)
" Set default width and height for now.
@@ -446,9 +446,9 @@ function! s:open_hunk_preview_window()
call nvim_buf_set_name(buf, 'gitgutter://hunk-preview')
" Assumes cursor is in original window.
autocmd CursorMoved <buffer> ++once call s:close_hunk_preview_window()
autocmd CursorMoved <buffer> ++once call gitgutter#hunk#close_hunk_preview_window()
if g:gitgutter_close_preview_on_escape
nnoremap <buffer> <silent> <Esc> :<C-U>call <SID>close_hunk_preview_window()<CR>
nnoremap <buffer> <silent> <Esc> :<C-U>call gitgutter#hunk#close_hunk_preview_window()<CR>
endif
return
@@ -584,7 +584,7 @@ function! s:goto_original_window()
endfunction
function! s:close_hunk_preview_window()
function! gitgutter#hunk#close_hunk_preview_window()
let bufnr = s:winid != 0 ? winbufnr(s:winid) : s:preview_bufnr
call setbufvar(bufnr, '&modified', 0)
@@ -602,7 +602,7 @@ endfunction
" Only makes sense for traditional, non-floating preview window.
function s:is_preview_window_open()
function gitgutter#hunk#is_preview_window_open()
for i in range(1, winnr('$'))
if getwinvar(i, '&previewwindow')
return 1

View File

@@ -190,6 +190,12 @@ Commands for operating on a hunk:~
the original window with |CTRL-W_p|. Alternatively set
|g:gitgutter_close_preview_on_escape| and use <Esc>.
Two functions are available for your own logic:
>
gitgutter#hunk#is_preview_window_open()
gitgutter#hunk#close_hunk_preview_window()
<
Commands for folds:~
*gitgutter-:GitGutterFold*