Clojure 用の indent と syntax 書いた

clojure 用の Vim プラグインと言えば VimClojure が有名どころで、私もこれを使っていたのだけど、グローバル変数汚染やらレジスタが勝手に書き変わるやらのバグがあったり(comment ...)とかのコメントがちゃんとコメントとしてハイライトされなかったりでいまいち微妙だし、リポジトリ最新ではなんと不完全な関数が含まれていて VimClojure を起動するだけでエラーが出るのでまともに使えない。ほんとに自分で使ってるのかこの作者。
個人的に欲しいのは indent と syntax だけなのに余計なのがごちゃごちゃ付いてきてて正直邪魔だったと言うのもあったので、自分で書き直すことにしてみた。

https://github.com/thinca/vim-ft-clojure

syntax や indent 内で使っているいくつかの関数を autoload 以下で定義するという風変わりな構成になっている。思うところもあって試しにこんな感じにしてみた。
syntax や indent のスクリプトは、ファイルが開かれる度に実行される。その際、関数定義があった場合はそれもその度実行される。無駄である。exists() と finish で回避する技もあるけど、少々わかりづらい。ならば autoload を使ってしまうのが手っ取り早いかな、ってことでこうなった。
まあ使う分には気にすることはない。
あと、コメントのハイライトはできたのだけど、代わりにコメント部分はうまくインデントされないようになってしまった。がんばればできそうな気もするんだけど…。保留になってます。できたとしても重くなるかもしれない。



とりあえず実用レベルにはなっていると思うので、VimClojure に不満がある方は試してみると良いかも。そしてフィードバックを。

TODO: 後でSS貼るかも