|
強調表示のバッファに上限がある理由の1つとしては、ファイルタイプ別の設定とし
てレジストリに書き込んでいるということがあります。
バイナリ情報に分割して記憶していて、際限なくレジストリに書き込むのはどうかと
いうことと、増えるたびにレジストリの互換性維持が大変ということがありました。
別件でUnicodeの直接記述したいという話もあって、レジストリの互換性がどうもネ
ックになるので、V8.90でhilightファイル直接指定モードというのを追加しています。
とはいえ約128KBの上限はそのままなのですが、hilightファイル直接指定モードであ
れば、将来的にそういった制約から解放できる可能性があります。
他の理由としては、複雑な正規表現を書いていて遅いということで、増やせば増やす
ほど遅くなる一方ということになることがあります。
高速に処理できることを前提としているので、128KBとはいえ、既に多すぎるという
気がしています。
もし上限を増やすとしたら、先に遅くなる一方の問題をどうにかしたほうがいいと思
います。
1つの案として、遅いことを前提に、計算済みの行はキャッシュしておくという話が
ありました。手元で試しにやってみたりしているのですが、キャッシュが多すぎて逆
に遅くなるパターンなどがあって思案中です。
もう1つのネタとしてカラーマーカーにする方法がありました。そのうちの1つでco
lormarkerallfoundで範囲指定できるのをV8.92β1で追加したりしています。
これでもまだ手間ですが、一応とても遅い色付けを現在に行だけ任意のタイミングで
できたりします。
hilightファイルを指定してできたら、さらにいいかもしれません。
deletecolormarkerの追加はヘルプに書いてませんでした。追記しておきます。
マクロの例:
setcompatiblemode 0x20000;
$layer="mylayer";
deletecolormarker $layer, 0
,lineno,0,lineno,linelen2; //V8.92で追加
setsearch @"(aaa|bbb|ccc)",0x10;
colormarkerallfound 0x0000ff,-1,-1,0,0,$layer
,lineno,0,lineno,linelen2; //V8.92で追加
setsearch @"(xxx|yyy|zzz)",0x10;
colormarkerallfound 0xffffff,0xff,-1,0,0,$layer
,lineno,0,lineno,linelen2; //V8.92で追加
|
|