|
>あまり早急に作りすぎて後々面倒な仕様になると困ることになるかもしれない
その通りだと思います。慎重にお願いします。
>他に何かひっかかることがあれば知らせていただければ考えます。
ということなので、別件ですがこのスレッドに繋げてしまいます。
置換で foundtopx 等が更新されないのが微妙に不便です。
マクロで置換後の文字列を選択状態にする処理を書くことがしばしばあります。
ヒットした先頭位置にカーソルを動かすとき、置換後の文字列が固定長なら column
- strlen() で済むのですが、後方参照を含んでいて長さが不定だったりすると…
// 対処1.mac
replacedown "「(.*?)」", "『\\1』", regular;
if (result) {
##endx = x;
##endy = y;
undo;
##topx = x;
##topy = y;
redo;
beginsel;
moveto ##topx, ##topy;
endsel;
}
// 対処2.mac
$src = "「(.*?)」";
$rpl = "『\\1』";
searchdown $src, regular;
if (result) {
##topx = foundtopx;
##topy = foundtopy;
$$text = gettext(foundtopx, foundtopy, foundendx, foundendy, true);
$$text = dllfuncstr("ReplaceRegular", "\\r", $$text, 0, "", 2);
$$text = dllfuncstr("ReplaceRegular", $src, $$text, 0, $rpl, 2);
insert $$text;
beginsel;
moveto ##topx, ##topy;
endsel;
}
…のような、微妙に無駄の多い処理にせざるをえません。
対処2.mac は searchdown のヒットと ReplaceRegular のヒットが厳密に一致すると
は限らない (例: 検索パターンが ^ や $ を含んでいる場合) という問題もあります。
この無駄をなくす方法は非常に簡単で、置換が foundtopx 等を更新してくれれば解
決する話です。
hidesoft.2:25506 で「仕様です」と明言されていますが、将来的に何とかなりませ
んでしょうか。
ゆっくりご検討いただければ幸いです。
|
|