mirror of
https://github.com/airblade/vim-gitgutter.git
synced 2025-11-08 11:33:48 -05:00
Improve hunk previewing.
- Treat &previewheight as a maximum height. - Make preview window shrink to fit the hunk. - Resize preview window each time. - Make preview window readonly and nomodifiable. Based on code by @somini. Thanks! See #451.
This commit is contained in:
@@ -196,15 +196,23 @@ endfunction
|
|||||||
|
|
||||||
|
|
||||||
function! s:preview(hunk_diff)
|
function! s:preview(hunk_diff)
|
||||||
|
let hunk_lines = split(s:discard_header(a:hunk_diff), "\n")
|
||||||
|
let hunk_lines_length = len(hunk_lines)
|
||||||
|
let previewheight = min([hunk_lines_length, &previewheight])
|
||||||
|
|
||||||
silent! wincmd P
|
silent! wincmd P
|
||||||
if !&previewwindow
|
if !&previewwindow
|
||||||
noautocmd execute 'bo' &previewheight 'new'
|
noautocmd execute 'bo' previewheight 'new'
|
||||||
set previewwindow
|
set previewwindow
|
||||||
|
else
|
||||||
|
execute 'resize' previewheight
|
||||||
endif
|
endif
|
||||||
|
|
||||||
setlocal noro modifiable filetype=diff buftype=nofile bufhidden=delete noswapfile
|
setlocal noreadonly modifiable filetype=diff buftype=nofile bufhidden=delete noswapfile
|
||||||
execute "%delete_"
|
execute "%delete_"
|
||||||
call append(0, split(s:discard_header(a:hunk_diff), "\n"))
|
call append(0, hunk_lines)
|
||||||
|
normal! gg
|
||||||
|
setlocal readonly nomodifiable
|
||||||
|
|
||||||
noautocmd wincmd p
|
noautocmd wincmd p
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
Reference in New Issue
Block a user