Make file_at_revision() preserve cursor position

note that this may still change the cursor position due to deletions
and insertions further up in the file, but now the cursor should at
least end up somewhere near its original position for smaller commits.
This commit is contained in:
Talia 2018-04-12 08:36:21 +02:00
parent 04eb8d6828
commit 2735e3ab59

4
vimrc
View file

@ -400,6 +400,7 @@ function! s:git_prev()
endfun endfun
function! s:file_at_revision(rev) function! s:file_at_revision(rev)
let l:pos = getpos(".")
if exists("b:git_original_file") " Is this already a file@revision buffer? if exists("b:git_original_file") " Is this already a file@revision buffer?
let l:fname = b:git_original_file let l:fname = b:git_original_file
let l:ftail = fnamemodify(b:git_original_file, ":t") let l:ftail = fnamemodify(b:git_original_file, ":t")
@ -418,6 +419,9 @@ function! s:file_at_revision(rev)
let b:git_original_file = l:fname let b:git_original_file = l:fname
let b:git_revision_hash = a:rev let b:git_revision_hash = a:rev
let l:pos[0] = bufnr('.')
call setpos('.', l:pos)
redraw
call s:git_info() call s:git_info()
endfun endfun