編集モードの強調文字列について

  1. @ Kuro さん
    開発&更新、おつかれさまです。

    編集モード Text の強調文字列として ^> を「行の右を強調」と「正規表現」オプションを有効にして設定しているのですが、
    「折り返し」が2回以上ある長い行で「折り返された2行目 (以降)」の物理行の行頭にあたる位置に「>」があると、何故かそのひとつ下の行が強調表示されてしまうようです。

    当方の環境にて ver 2.8.6.1 と 2.6.7 で再現することを確認しました(@ Win XP 32bit + Mery ポータブル)。
    https://i.imgur.com/10aBAXn.png

    ご確認、よろしくお願いします。

     |  sukemaru  |  返信
  2. ご報告ありがとうございます。

    「行の右を強調」は強調文字列が行頭かどうかにかかわらず、一致した文字から右側を強調します。また、折り返しが含まれている場合は 2 行までが対象になります。

    「正規表現」で「^>」は行頭の「>」ですから、これと「行の右を強調」を組み合わせた場合、折り返された行の 2 行目以降の行頭にある「>」は正規表現ではヒットしません。

    Mery は高速化のため、独自のアルゴリズムで色分けの優先度を決めていますから、正規表現でヒットしなかった「>」は読み飛ばされます。

    また、折り返しが含まれている場合に 2 行までを対象にしますが、これは前の行 (最大 240 文字まで) にさかのぼって構文解析をしています (行をまたぐと速度が遅くなるのはこのためです) ので、こちらは「^>」と「行の右を強調」がヒットするため、折り返された行の 2 行目の部分が色分けされます。

    これらは描画速度を高速化するための仕様上の制限事項となります。

    Mery で使用させていただいているエディタエンジンでは、仕組み上、実用に耐える速度を維持したまま論理行をきちんと解析することは残念ながらほぼ不可能だと思います。(論理行の先頭までさかのぼって構文解析することになり、速度が非常に遅くなってしまいます)

    ご不便をおかけして申し訳ございませんがご了承いただけると幸いです。

     |  Kuro  |  返信
  3. ご返信、ありがとうございます。

    別件のアウトラインペインのサイズ調整がスムーズにできるようになって、実際に調節をしていたときに気付いたことをご報告したまででして、個人的には不自由が生じるほどのことではありません。
    折り返しと強調表示が難しい関係であることは承知しておりますので、本件もかかる制限事項のひとつとして諒解いたしました。 :)

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

    そうですね。論理行の扱いが苦手とはいえ、実際に設定した色分けがきちんと適用されていないとバグだと思いますよね。

    行をまたぐ色分けには対応していないという点は MeryWiki の [よくある質問] のほうに記載していますが、行をまたぐ色分けを行ったときにどのような色分けになってしまうかまで詳細には記載していませんでした。

    ただ、その場合の挙動につきましては強調文字列の設定次第であらゆる可能性が考えられますから、それらの組み合わせによって発生する色分けの不整合を仕様として記載することは非常に難しいです。

    ご不便をおかけして申し訳ございませんが、ご了承いただけると幸いです。

     |  Kuro  |  返信
スポンサーリンク