git diff の出力を畳む Ex コマンド
foldmethod=expr
は重いし filetype=diff
とかじゃない捨てバッファ(例えば :r!git diff foo...bar
して出力を取り込んだバッファ)でもサクッと畳みたいので作った。
:FoldDiff
すると現在バッファの git diff
の出力を畳みます。
command! FoldDiff call s:cmd_fold_diff() function! s:cmd_fold_diff() abort if getline(1) !~# '^diff ' 1,/^diff /-1 delete _ endif normal! zE 1 while search('^diff ', 'W') ?^diff ?,.-1 fold endwhile .,$ fold endfunction
プラグインとして作るなら foldmethod=expr
になるだろうけどデカい diff とかの時つらそう(適当)。
ちなみに上記のコードは git diff
以外、例えば素の diff
の出力とか他 VCS の diff とかは試してないので色々適当です。