[要望] 強調表示における前方・後方一致・No.37547
fzok4234 さん 19/09/22 18:40
 
お世話になっております。

さて、強調表示の正規表現の前方・後方一致・不一致指定で行をまたいでのパターン
指定ができるようにしてもらいたいのですが可能でしょうか?

例えば、

foo
target
bar
target

という内容があったとき、4行目のtargetという文字列のみを強調表示させるために
(?<=bar\n)target
と指定することで、2行目のtargetという文字列を除外して4行目のtargetという文字
列のみを強調表示させるということです。

現在の秀丸エディタでは\nや\sを用いての行をまたいだ強調表示に非対応なのは招致
なのですが、前方・後方一致・不一致指定で行をまたいでのパターン指定までできな
いとなると、C#などのトークン境界に改行文字まで使える形式の文書では強調表示の
定義を作りにくく不便です。

どうかよろしくお願いします。



[ ]
RE:37547 [要望] 強調表示における前方・No.37551
秀丸担当 さん 19/09/24 10:05
 

強調表示は、確かに改行をまたがってできなくて、後方一致とかも同様にできないで
す。
できるようにするのは不可能ではないと思いますが、内部的な都合もあって簡単では
なさそうです。そういうご要望があるということで、ご意見参考にさせていただきま
す。

現状でなんとかする方法として、カラーマーカーで色付けする方法が考えられます。
例えば、検索ダイアログで、正規表現ONで
(?#fulllinematch)(?<=bar\n)target
と入力して、「すべて検索 - 色付け」をすると色が付きます。

さらにマクロで別のレイヤーに色付けするようにしておくと、他に影響を与えること
がない色付けになります。
ただファイルを読み込み直後や、任意のタイミングでマクロを実行する必要がありま
す。
マクロの例:
setcompatiblemode 0x20000;
deletecolormarkerall "myhilight";
setsearch "(?#fulllinematch)(?<=bar\\n)target", 0x00000010;
colormarkerallfound 0x0000ff, -1, -1, 2, 0, "myhilight";

[ ]