2013/12/12

NeoBundle の NeoBundleLazy したプラグインをファイル名指定で autoload する

前回、 Processing なファイルを Vim で扱いやすいようにしたのですが、プラグイン導入には NeoBundle を使いました。
NeoBundle には Lazy Load 機能があって、プラグイン必要な時にロードすることができます。
その設定には特定の command が実行された時に load したり、 filetype によって load したりすることができます。
しかし、 Processing な filetype が Vim に無く、そもそも Processing 用の filetype を追加するためのプラグインが vim-processing でした。

なので、これを Lazy 化した後に必要な時のみ load する案として、
  • NeoBundle では NeoBundleLazy するだけ
  • autocmd で BufRead や BufNewfile の時のみ NeoBundleSource する
という方式で前回は Lazy Load していました。

そこで「filetype が無いファイルのために、拡張子ごとに autoload する設定とかが NeoBundle に無いかなー」とかつぶやいて寝て起きると実装されていました。暗黒美夢王さんすごい。

autoload に  filename_patterns というものが指定できるようになりました。
ファイル名の正規表現 もしくは 正規表現のリストを指定することにより、このファイルを編集した時に autoload してくれるようになります。

ということで、前回の *.pde を開いた時に vim-processing を load する、という設定が
NeoBundleLazy 'sophacles/vim-processing'
augroup Processing
    autocmd!
    autocmd BufNewFile *.pde NeoBundleSource vim-processing
    autocmd BufRead    *.pde NeoBundleSource vim-processing
augroup END
から
NeoBundleLazy 'sophacles/vim-processing' , {'autoload' : {'filename_patterns' : '.*\.pde'}}
に。
行も減ったし augroup も減ったので良い感じ。

あと、正規表現に対応しているのでオレオレファイルを開いた時に autoload とか、独自拡張子とかにも対応できそうです。

暗黒美夢王こと@ShougoMatsuさん、ありがとうございますー。

0 件のコメント:

コメントを投稿