2012年3月20日火曜日

[vim] unite.vimのfilter周りがちょっとわかった気がする。

bzr-logの複数リビジョン対応のときに、unite.vimのfilter周りを調べた。
今回の修正で、bzr-logでマークした複数のリビジョンに対して、
actionであるbzr-deltaを実行できるようになった。

今まで、uniteのデフォ機能で、マークしたものに対して一度にアクションを実行することはできたが、
それでは、選択した複数のリビジョンで同じファイルを修正していた場合、実行したbzr-deltaの結果として、
同じファイルができてしまう。

今回filter(converter)を追加して、candidatesの中に同じファイルパスを指すものがあった場合、
それを1つにまとめ、bzr-deltaのアクション(vimdiff)の引数を修正するようにした。
通常のfilterはsource毎に呼び出されるようだったので、
sourceに設定するのではなくuniteバッファに設定するunite#set_profileを使ってfilterを設定した。
これなら、すべての候補が出力されてからfilterが実行されるので、
かぶってる候補をまとめることができた。

unite.vimでできることが広がった気がする。

kokukuma / vim-unite-bzr

0 件のコメント:

コメントを投稿