Vim YAML Compiler Plugin


VimYAML Compiler Plugin。


Plagger とか、Catalyst とか Rails とかで YAML を書くことが多くなったので、ちょっと前に作ってみた。

これを ~/.vim/compiler/yaml.vim に作っておくと、:make → :cw でエラーチェック、修正が出来る。


とは言うものの、かなり無理やり。

makeprj が perlワンライナーって。


PerlYAML.pm が必要。

if exists("current_compiler")
  finish
endif
let current_compiler = "yaml"

let s:savecpo = &cpo
set cpo&vim

if exists(":CompilerSet") != 2  " older Vim always used :setlocal
  command -nargs=* CompilerSet setlocal <args>
endif

CompilerSet makeprg=perl\ -MYAML\ -e\ '$f=shift\ or\ die\ qq/No\ input\ file.\\n/;eval{YAML::LoadFile($f)};if($@){warn\ qq/$@$f\ had\ compilation\ errors.\\n/}else{warn\ qq/$f\ syntax\ OK\\n/}'\ %

CompilerSet errorformat=
    \%EYAML\ Error:\ %m,
    \%C\ \ \ Code:\ %t,
    \%C\ \ \ Line:\ %l,
    \%C\ \ \ Document:\ %c,
    \%-G\ at\ %.%#,
    \%C%f\ had\ compilation\ errors.,
    \%-G%.%#syntax\ OK,
    \%Z,%-C%.%#

let &cpo = s:savecpo
unlet s:savecpo

errorformat が かなりひどいな・・・

よくわからんけどこれで動いてるっぽいのでそっとしておこう。


あとは ~/.vimrc に

autocmd FileType yaml set ts=4 sw=2 sts=2
autocmd FileType yaml compiler yaml

とか書いておけばOK