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さん、ありがとうございますー。

2013/12/11

Processing を Vim から使う

Processing を使うことになったのですが、Vim に Processing な filetype は無い様子。

vim-processing という plugin があるらしく、それで filetype 検出や syntax highlighting はやってくれるみたいです。
加えて設定をすると、 quickrun から実行できるようなので設定など。


ということで以下の設定 .vimrc に追加してプラグインを入れる。
NeoBundleLazy 'sophacles/vim-processing'
augroup Processing
    autocmd!
    autocmd BufNewFile *.pde NeoBundleSource vim-processing
    autocmd BufRead    *.pde NeoBundleSource vim-processing
augroup END
これで *.pde を開くときちんと syntax highlighting されます。
あと、quickrun の設定で
let g:quickrun_config.processing = {
\     'command': 'processing-java',
\     'exec': '%c --sketch=%s:p:h/ --output=/tmp/processing --run --force' }
も追加。

これで quickrun から processing-java というコマンドで processing を実行できます。

processing-java のインストールは参考サイトにあるように、
Processing の Menu -> Tools -> Install "Processing-java"
で可能です。
インストールすると Command Line から processing を呼べるようになります。

ちなみに使い方は
--sketch で sketch のディレクトリ指定
--output で出力先を指定
するようです。

sketch は hoge/hoge.pde みたいなディレクトリ構成になってないといけないようで、 --sketch ではディレクトリごと指定してやる必要があるみたいです。
なので %s:p:h を使ってディレクトリを指定。
%s は quickrun の symbol で file name です。
:p:h はファイル名を絶対パス化した上でディレクトリのみを抜きだす、というもの。
filename-modifiers とかいうものらしく、 quickrun の document に You can use filename-modifiers for the symbols. って書かれてました。
:p:h の詳しい解説は :h filename-modifiers を見た方が早いはず。
ちなみに write してない buffer は名前の関係で quickrun できません。

あと --output は無難なところで /tmp に変更。

そんなこんなで、 processing な sytaxhighlighting + quickrun で実行できるようになりました。