aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bundle/git-blamer/autoload/git_blamer.vim28
-rw-r--r--bundle/git-blamer/plugin/git_blamer.vim1
-rw-r--r--vimrc3
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()
diff --git a/vimrc b/vimrc
index e369db2..883a36a 100644
--- a/vimrc
+++ b/vimrc
@@ -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>