diff options
Diffstat (limited to 'bundle/git-blamer/autoload/git_blamer.vim')
-rw-r--r-- | bundle/git-blamer/autoload/git_blamer.vim | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/bundle/git-blamer/autoload/git_blamer.vim b/bundle/git-blamer/autoload/git_blamer.vim new file mode 100644 index 0000000..cd6d83f --- /dev/null +++ b/bundle/git-blamer/autoload/git_blamer.vim @@ -0,0 +1,28 @@ +function! git_blamer#Blame() + let l:line_number = line('.') + let l:buffer_name = shellescape(bufname('%')) + let l:window_number = winnr() + + setlocal scrollbind cursorbind + let t:git_blamer_restore = 'call setwinvar(' . l:window_number . ', "&scrollbind", 0) | + \ call setwinvar(' . l:window_number . ', "&cursorbind", 0)' + + " Open new window + vnew + setlocal noswapfile nowrap nolist nobuflisted buftype=nofile bufhidden=wipe + setlocal scrollbind cursorbind + + " Read in `git blame` output + execute 'read !git blame ' . l:buffer_name + + " Delete empty first line + 1 delete + + setlocal nomodified nomodifiable + + " Move cursor to position in starting file + call setpos('.', [0, l:line_number, 0, 0]) + + " Restore starting file's scrollbind on exit + autocmd BufWinLeave <buffer> execute t:git_blamer_restore +endfunction |