なにこれ
Rubyのdef-endなどの対応を%
でジャンプするためのVimプラグイン。Parser gemを使っているので、Parser gemが正確にパースできるコードであれば正確な位置にジャンプできる。
動機
vim-jpのSlack1でmatchup.vimがうまく動かないという話を見て、Parser gemを使ってやったら面白そうだなと思って作ってみた。
作ってから気がついたのだけど、自分が普段%
を使っていないので、自分ではあまり使わない気がする。
trickのコードのような「何がどう対応しているのかさっぱりわからないコード」を読む時に多分とても便利。2
実装
Parser gemでコードをパースして、カーソル位置に対応するnodeを取り出して、対応した場所がbegin
やkeyword
であればend
の位置を、end
であればbegin
やkeyword
の位置を返してあげるだけ。
実装はとても短い3ので簡単に読める。
RipperではなくParser gemを使っているのは、Ripperだと「対応するend」を取るのが大変すぎるため。RubyVM::AST
は試してないからできるかどうかわからない。