鬼車 6.9.10

  1. 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  |  返信
  2. 情報ありがとうございます。

    oniguruma ですが、GitHub のリリースページを見ると 6.9.9 が Latest になっているので、6.9.10 はまだ正式リリースではないかもしれません。

    GitHub のソースコードを確認したところ、最近も更新が続いているようなので、6.9.10 がリリースページに上がってくるのを待ったほうがいいかなと思うのですが、どうでしょうか。

    【参考】Releases · kkos/oniguruma · GitHub
    https://github.com/kkos/oniguruma/releases

     |  Kuro  |  返信
  3. > 情報ありがとうございます。
    こちらこそ、ぶっきらぼうな書き方をしてしまったのに、
    ご確認いただきまして、ありがとうございます。

    > GitHub のソースコードを確認したところ、最近も更新が続いているようなので、
    > 6.9.10 がリリースページに上がってくるのを待ったほうがいいかなと
    > 思うのですが、どうでしょうか。

    仰る通りですね。(6.9.10は、開発版なのかな。)
    見つかったバグは踏まなければいいだけなので、Releaseのページに
    出るのを待つのが良さそうですね。

     |  tak  |  返信
  4. ご返信ありがとうございます。

    > 見つかったバグは踏まなければいいだけなので、Releaseのページに出るのを待つのが良さそうですね。

    そうですね。Unicode 16.0 対応も魅力的ですし、リリースページで正式版が公開されたら、対応を検討してみたいと思います。

    Mery では oniguruma のソースコードをカスタマイズしている部分があるので、6.9.10 に対応できるかどうかは、実際に確認してみないと何とも言えませんが…。

     |  Kuro  |  返信
  5. 鬼車 6.9.10 がリリースページで正式版として公開されたようですね!

    新機能の (*SKIP) は、まだよく分かっていませんが…。ひとまず、Mery 向けのカスタマイズがうまくいったら対応してみようと思います。

     |  Kuro  |  返信
  6. > 鬼車 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  |  返信
  7. ご返信ありがとうございます。

    とりあえず、Mery 向けに鬼車 6.9.10 の実装、できました!

    > ↓のskipを使ってみたいですね。

    面白そうですよね!

    なんとなくですが、「無駄な処理を飛ばして高速化する仕組み」って感じでしょうか?

    ただ、正直なところ、私は重たい正規表現を書いたことがないので、この機能の真価はまだわかっていません…。

    それでも、(*SKIP)を使った検索は問題なく動作しているようなので、たぶん大丈夫でしょう…。

    次のバージョンで対応できそうなので、楽しみにしていてくださいね!

     |  Kuro  |  返信
  8. とりあえず、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  |  返信
  9. > とりあえず、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  |  返信
スポンサーリンク