ちょっとだけ便利にしたsvn.vimを結構見やすくしてみた
以前、「d:id:tekiomo:20110111 svn.vimをちょっとだけ便利に」というエントリーでsvn.vimにsvn diffの他にsvn infoとsvn logの結果も表示させるようにしました。
なかなか便利なのですが、svn diffの前にsvn infoとsvn logの結果を表示させているためsvn diffが見づらくなってしまいました。
ということで、tab splitを用いてsvn diff(右側)とsvn info&svn log(左下)と各々を分けて表示させることにしてみました。
diff
$ diff -u svn.vim.org svn.vim --- svn.vim.org 2011-01-11 20:04:36.175583001 +0900 +++ svn.vim 2011-01-23 15:20:23.273972000 +0900 @@ -22,26 +22,45 @@ function! Svn_diff_windows() let i = 0 - let list_of_files = '' + let files = [] while i <= line('$') let line = getline(i) if line =~ '^M' let file = substitute(line, '\v^MM?\s*(.*)\s*$', '\1', '') - let list_of_files = list_of_files . ' '.file + call add(files, file) endif let i = i + 1 endwhile - if list_of_files == "" + 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 - exe 'normal :r!LANG=C svn diff ' . list_of_files . "\n" + 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!