1 件の投稿を表示中 (合計 6 個)
  • 作成者
    投稿
  • #8800
    sysart_use
    参加者

    function FuncName() {
    }

    といった関数のfunctionとFuncNameの部分を別々に強調表示したいので、
    1)function
    2)^s*functions+w+
    と、2つの強調文字列を指定しましたが、1)の方は無視されてしまいます。
    こんな場合はどうすればよいでしょうか。肯定後読みも試しましたが、先行する部分は固定長でないといけないようで使えませんでした。

    #8801
    Yutaka Emura
    キーマスター

    sysart_use 様

    EmEditor をお使いいただき、ありがとうございます。
    ご指摘のように、強調文字列の優先順位は、不定になっています。これは描画速度を最適化するためですが、将来のバージョンでは改善を検討したいと思います。(?<=pattern) による肯定後読みの pattern は、ご指摘のように固定長である必要があります。ご意見ありがとうございます。

    他にも何かご質問がございましたら、ご遠慮なく、ご連絡ください。今後もよろしくお願い申し上げます。

    #8808
    gecca
    メンバー

    どういう動作を理想とされているかは分かりませんが、
    以下のように指定することで片方が無視される状況は回避できます。

    1)^s*functions+w+
    2)function

    登録されている定義文字列が多くて設定画面上での操作が面倒な場合は、
    一度設定をエクスポートしてから設定ファイルを編集するのがお勧めです。

    的外れな意見だったらすみません・・・。
    ご参考になれば幸いです。

    #8815
    sysart_use
    参加者

     geccaさんありがとうございます。
     どのような規則で優先されるか知りたいです。たぶんfunctionの前に空白を置くと先に1がヒットしてしまうのでそちらが優先になるのではないかと想像しています。
     私のやりたいことはfunctionとその後に続くFuncNameを別々に強調することです。

    #8816
    Yutaka Emura
    キーマスター

    sysart_use 様

    いつも EmEditor をご利用いただき、ありがとうございます。

    強調文字列の表示の優先順位については、v9 の場合は、次のようになっています。

    最初に、「正規表現」にチェックを付けていない文字列を ABC 順にソートしてから、一致しているかどうかを調べています。1個でも一致している文字列を見つけたら、そこで検索が終わります。

    次に、「正規表現」にチェックをつけている文字列、設定した順番(一覧の上から)すべてを一致しているかどうか調べ、一致している文字列があれば強調表示を実行し、この場合は、すべての文字列を調べています。

    sysart_use さんの場合を再現したのですが、

    ^s*functions+w+
    function

    という強調文字列を設定して、テスト用のテキストとして

    function FuncName

    というテキストを用意しました。

    両方の強調文字列に「正規表現」のチェックを付けておけば、両方とも正しく強調表示が効きました。function に正規表現のチェックを付けていない場合は、関数名 (FuncName) と同じ色で function が強調されました。ですから、両方の文字列に「正規表現」のチェックを付けておけば問題はないはずです。

    なお、この仕様は、将来のバージョンでは、改善のため変更になる可能性もありますことをご了承ください。
    どうぞよろしくお願い申し上げます。

    #8828
    sysart_use
    参加者

     丁寧なご回答ありがとうございました。
     確認したところお教えいただいたとおりの方法で期待した外観になりました。ありがとうございました。

1 件の投稿を表示中 (合計 6 個)
  • このトピックに返信するにはログインしてください。