diff options
-rw-r--r-- | bundle/git-blamer/autoload/git_blamer.vim | 28 | ||||
-rw-r--r-- | bundle/git-blamer/plugin/git_blamer.vim | 1 | ||||
-rw-r--r-- | vimrc | 3 |
3 files changed, 31 insertions, 1 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 diff --git a/bundle/git-blamer/plugin/git_blamer.vim b/bundle/git-blamer/plugin/git_blamer.vim new file mode 100644 index 0000000..52197da --- /dev/null +++ b/bundle/git-blamer/plugin/git_blamer.vim @@ -0,0 +1 @@ +command! GitBlamer :call git_blamer#Blame() @@ -324,6 +324,7 @@ " 2015.07.23: " * Add mapping to open a new split that `git blame`s the current file " * Modify `git blame` mapping to open in less +" * Modify `git blame` mapping to use custom git-blamer plugin " @@ -657,7 +658,7 @@ nnoremap <leader>p :read !pbpaste<cr> " Open a new split with a `git blame` of the current file " Inspired by Ben Orenstein " https://github.com/r00k/dotfiles/blob/7874508b825fd754e4ec3259da65f324ab96c8ea/vimrc#L74 -nnoremap <leader>gb :!git blame <c-r>=expand('%:p')<cr> \| less -S<cr> +nnoremap <leader>gb :GitBlamer<cr> |