svn-diff.vimをより見やすく

以下のエントリを参考に、svn-diff.vim(svn.vim)を変更してみた。

左上に、コミット用コメント欄

左下に、svn log

右に、svn diff

が、表示されるようになる。

 

pathogen.vimを利用しているので、以下を編集

 


$ vim ~/.vim/bundle/vim-svndiff/ftplugin/svn.vim

...

 

function! Svn_diff_windows()

let i = 0

let files = []

 

while i <= line('$')

let line = getline(i)

if line =~ '^M'

 

let file = substitute(line, '\v^MM?\s*(.*)\s*$', '\1', '')

call add(files, file)

endif

 

let i = i + 1

endwhile

 

if len(files) == 0

return~

endif

 

let list_of_files = join(files, ' ')

 

set nosplitright

 

vnew

silent! setlocal ft=diff previewwindow bufhidden=delete nobackup noswf nobuflisted nowrap buftype=nofile

execute 'normal :r!LANG=ja_JP.UTF8 svn diff ' . list_of_files . "\n"

setlocal nomodifiable

goto 1

redraw!

wincmd R

wincmd p

goto 1

redraw!

 

new

silent! setlocal ft=diff previewwindow bufhidden=delete nobackup noswf nobuflisted nowrap buftype=nofile

for file in files

execute 'normal :r!LANG=ja_JP.UTF8 svn info ' . file . " | grep 'URL:'\n"

execute 'normal :r!LANG=ja_JP.UTF8 svn log -r PREV:HEAD --limit=1 ' . file . "\n"

endfor

~~~~

setlocal nomodifiable

goto 1

redraw!

wincmd R

wincmd p

goto 1

redraw!

endfunction

 

set nowarn

 

call Svn_diff_windows()

set nowb

 

 

参考: http://d.hatena.ne.jp/tekiomo/20110123/1294746063