Vim 8.0.0623に私の書いたパッチが取り込まれました。 わーい ∩(>◡<*)∩ わーい!
もともとのきっかけは、自分のプラグインを開発している中で、[\u3000-\u4000]
という正規表現に対する挙動がset re=1
とset re=2
で違うことに気がついたのです。
Vimは正規表現エンジンを2つ積んでいる恐ろしいエディターなのですが、この2つの正規表現エンジンの挙動に微妙な違いがあることに気がつきました。
新しいNFAエンジンではエラーは出ませんが、古いエンジンではエラーが出ます。
古い正規表現エンジンでは、[a-z]
みたいなパターンで、[\u3000-\u4000]
のように差が大きすぎるとエラーを吐くのです。
この挙動の違いはまぁいいんです、エンジンの仕組みがぜんぜん違うので…
ただ、この時のエラー番号E16でヘルプを引くと、コマンドのrangeに関するエラーなんです。
例えば :0buffer
のようなケースですね。
ソースコードを覗いてみると、E16は [z-a]
のようなパターンに対するエラーにも使われており、コマンドのrangeに関するエラーと正規表現の文字クラスに関するエラーは分けたほうが良さそうだと気が付きました。
エラー番号E16を正規表現のエラーに使いまわすのはおかしいと報告したところ、Bram氏に「昔はメモリーをあまり使わないよう、エラーメッセージが増えすぎないようにしていたんだ」と教えてもらいました。
「どう変えたらよくなるかを提案してね」ということだったので、エラーメッセージを追加したパッチを送りました。
この最初のパッチでは[z-a]
と[\u3000-\u4000]
の2つのエラーを同じメッセージにしていたのですが、Bram「メッセージ2つ分けてちょうだい。あとテストも書いてくれたらうれしいな」とのことだったので、メッセージを分けてテストを書いて送り返しました。
それから半月くらい音沙汰なかったのですが、最近ようやくマージされました。
返事がなくても気長に待つことですね。
あと、ヘルプなどのruntimeファイルはまとめて更新されるはずです。
最新バージョンを入れて動作チェックして、自分が書いたエラーメッセジが表示された時はホッとしました。 VimのE944とE945はな、父さんが作ったんだよって息子に自慢できますね、結婚してないけど。 世界中の開発者が使う道具の中のどこかに自分が書いたコードが入っていると思うとワクワクしますね! そんな感じです!じゃあねっ!