鬼車 6.9.10
-
onigurumaが半年前くらいに、バグ修正込みで更新されているような。
https://github.com/kkos/oniguruma
Version 6.9.10
Update Unicode version 16.0
Add new operator (*SKIP)
Fixed: ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS not working for ^* pattern (Issue #292)issueリンク
https://github.com/kkos/oniguruma/issues/292ご対応済みでしたら申し訳ありません。
| tak | 返信 -
情報ありがとうございます。
oniguruma ですが、GitHub のリリースページを見ると 6.9.9 が Latest になっているので、6.9.10 はまだ正式リリースではないかもしれません。
GitHub のソースコードを確認したところ、最近も更新が続いているようなので、6.9.10 がリリースページに上がってくるのを待ったほうがいいかなと思うのですが、どうでしょうか。
【参考】Releases · kkos/oniguruma · GitHub
https://github.com/kkos/oniguruma/releases| Kuro | 返信 -
> 情報ありがとうございます。
こちらこそ、ぶっきらぼうな書き方をしてしまったのに、
ご確認いただきまして、ありがとうございます。> GitHub のソースコードを確認したところ、最近も更新が続いているようなので、
> 6.9.10 がリリースページに上がってくるのを待ったほうがいいかなと
> 思うのですが、どうでしょうか。仰る通りですね。(6.9.10は、開発版なのかな。)
見つかったバグは踏まなければいいだけなので、Releaseのページに
出るのを待つのが良さそうですね。| tak | 返信 -
ご返信ありがとうございます。
> 見つかったバグは踏まなければいいだけなので、Releaseのページに出るのを待つのが良さそうですね。
そうですね。Unicode 16.0 対応も魅力的ですし、リリースページで正式版が公開されたら、対応を検討してみたいと思います。
Mery では oniguruma のソースコードをカスタマイズしている部分があるので、6.9.10 に対応できるかどうかは、実際に確認してみないと何とも言えませんが…。
| Kuro | 返信 -
鬼車 6.9.10 がリリースページで正式版として公開されたようですね!
新機能の (*SKIP) は、まだよく分かっていませんが…。ひとまず、Mery 向けのカスタマイズがうまくいったら対応してみようと思います。
| Kuro | 返信 -
> 鬼車 6.9.10 がリリースページで正式版として公開されたようですね!
>
> 新機能の (*SKIP) は、まだよく分かっていませんが…。ひとまず、Mery 向けのカスタマイズがうまくいったら対応してみようと思います。楽しみにしています!
↓のskipを使ってみたいですね。
>Update Unicode version 16.0
>Add new operator (*SKIP)
>Fixed: ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS not working for ^* >pattern (Issue #292)| tak | 返信 -
ご返信ありがとうございます。
とりあえず、Mery 向けに鬼車 6.9.10 の実装、できました!
> ↓のskipを使ってみたいですね。
面白そうですよね!
なんとなくですが、「無駄な処理を飛ばして高速化する仕組み」って感じでしょうか?
ただ、正直なところ、私は重たい正規表現を書いたことがないので、この機能の真価はまだわかっていません…。
それでも、
(*SKIP)
を使った検索は問題なく動作しているようなので、たぶん大丈夫でしょう…。次のバージョンで対応できそうなので、楽しみにしていてくださいね!
| Kuro | 返信 -
とりあえず、Ver 3.7.10 で鬼車 6.9.10 に対応してみました。
(*SKIP)
も動いているみたいですが、Mery との相性はちょっと微妙かも…?たとえば、こんな感じでコメント (
//
より後ろ) のスキップを試してみました。コメントをスキップする例:
//.*(*SKIP)(?!)|\b\w+\b
対象テキスト:
int x = 42; // This is a comment return x;
マッチ結果:
int x 42 return x
見た目は問題なく動いているっぽいですが…
検索開始位置が
//
より後ろだったり、逆方向で検索したりすると、検索の強調表示と検索位置が一致しないことがあるみたいです。Mery の検索って、カーソル位置から検索が始まるし、強調表示も 1 文字ずつ進めてマッチを確認する仕様なので、
(*SKIP)
を使う場合はそのあたりに注意したほうがよさそうですね。あと、逆方向検索では、
(*SKIP)
が順方向のスキップを前提に動くことで、意図しない場所に一致してしまうのかも?なかなか使いどころが難しそうですが、強調文字列やマーカー用の正規表現として使うなら、これらの問題はある程度回避できるかもしれません。
(そもそも
(*SKIP)
の使い方が間違っていたらすみません)| Kuro | 返信 -
> とりあえず、Ver 3.7.10 で鬼車 6.9.10 に対応してみました。
>
> `(*SKIP)`も動いているみたいですが、Mery との相性はちょっと微妙かも…?
>
> たとえば、こんな感じでコメント (`//`より後ろ) のスキップを試してみました。
>
> コメントをスキップする例:
> ```
> //.*(*SKIP)(?!)|\b\w+\b
> ```
> 対象テキスト:
> ```
> int x = 42; // This is a comment
> return x;
> ```
> マッチ結果:
> ```
> int
> x
> 42
> return
> x
> ```
> 見た目は問題なく動いているっぽいですが…
>
> 検索開始位置が`//`より後ろだったり、逆方向で検索したりすると、検索の強調表示と検索位置が一致しないことがあるみたいです。
>
> Mery の検索って、カーソル位置から検索が始まるし、強調表示も 1 文字ずつ進めてマッチを確認する仕様なので、`(*SKIP)`を使う場合はそのあたりに注意したほうがよさそうですね。
>
> あと、逆方向検索では、`(*SKIP)`が順方向のスキップを前提に動くことで、意図しない場所に一致してしまうのかも?
>
> なかなか使いどころが難しそうですが、強調文字列やマーカー用の正規表現として使うなら、これらの問題はある程度回避できるかもしれません。
>
> (そもそも`(*SKIP)`の使い方が間違っていたらすみません)導入ありがとうございます。
今晩、時間が取れそうなので、いろいろ試してみます。| tak | 返信