pathogen.vim みたいなことをする rtputil.vim ってのを作った

pathogen.vim は便利なんだけど、私に必要な機能が足りなかったので、vimrc に独自のものを書いていた。
で、折角なのでその部分をプラグイン化してみようと思い立ったのが先月の中旬。すでにあるものを移すだけだしサクッっと終わるだろ、と思ってたんだけど、あちこちいじっていたらかなり時間を食ってしまい、結果、完全に別物の変態的な機能を持ったスクリプトになってしまった。
最初に言っておくと、pathogen.vim で困ってない人は使う必要まったくないです。むしろこんなの使わない方がいいに違いない。

https://github.com/thinca/vim-rtputil

どんなことができるのか

面倒なので Vim スクリプトで書きます。網羅的ではないので全部知りたい人は help を参照。

" pathogen みたいに bundle を runtimepath に追加する
call rtputil#bundle()

" 別の名前のものを追加する
call rtputil#bundle('labs')

" サブディレクトリではなく 1 つだけ追加する
call rtputil#append('~/myruntimepath')

" 使わない名前のディレクトリを消す
call rtputil#remove('pathogen')

" :helptags する
call rtputil#helptags()

" RTP object を取得
let r = rtputil#new()

" 色々する (apply() を呼んだ時点で初めて 'runtimepath' が更新される)
call r.reset().bundle().append('~/myruntimepath').apply()

最後の RTP object がキモすぎますね。

その他

pathogen.vim は pathogen#runtime_append_all_bundles() を呼ぶと追加したディレクトリの名前(デフォルトでは "bundle")を記憶して、同じ名前は追加しないようにしてます。これは vimrc で runtimepath を reset している人には致命的。
rtputil.vim ではそのようなことはないです。重複した項目は追加しないようになってるので、bundle() を呼びまくっても大丈夫!

最後に

もう一度言っておくと、pathogen.vim で困ってない人はこんなの使うことないです。忘れましょう。