diff --git a/autoload/gitgutter/hunk.vim b/autoload/gitgutter/hunk.vim index de14d91..8733e54 100644 --- a/autoload/gitgutter/hunk.vim +++ b/autoload/gitgutter/hunk.vim @@ -440,16 +440,24 @@ function! s:open_hunk_preview_window() " Assumes cursor is in original window. autocmd CursorMoved ++once call s:close_hunk_preview_window() + if g:gitgutter_close_preview_on_escape + nnoremap :call close_hunk_preview_window() + endif return endif if exists('*popup_create') - let s:winid = popup_create('', { + let opts = { \ 'line': 'cursor+1', \ 'col': 'cursor', \ 'moved': 'any', - \ }) + \ } + if g:gitgutter_close_preview_on_escape + let opts.filter = function('s:close_popup_on_escape') + endif + + let s:winid = popup_create('', opts) call setbufvar(winbufnr(s:winid), '&filetype', 'diff') @@ -480,6 +488,15 @@ function! s:open_hunk_preview_window() endfunction +function! s:close_popup_on_escape(winid, key) + if a:key == "\" + call popup_close(a:winid) + return 1 + endif + return 0 +endfunction + + " Floating window: does not care where cursor is. " Preview window: assumes cursor is in preview window. function! s:populate_hunk_preview_window(header, body)