|
再現条件が違いました。
マクロから置換ダイアログを出した場合、まとめてやり直しができません。
メニューから置換ダイアログを出した場合、まとめてやり直しができます。
念のため、以下に Ctrl-R に割り当てているマクロを貼っておきます。
----
loaddll "TKInfo.dll";
if (result) {
#isHidemaruMail = true;
}
#searchoption = searchoption | 0x00000800; // 検索文字列の強調
#searchoption = #searchoption | 0x00000004; // 置換フラグをつける
#inselect = 0;
if (selecting) {
if (seltoplineno != selendlineno) {
setsearch searchbuffer, #searchoption;
forceinselect 1;
hilightfound 1;
find2;
} else {
$text = gettext(seltopx, seltopy, selendx, selendy, 1);
setsearch $text, #searchoption;
hilightfound 1;
find2;
}
} else if (code == '\r' || code == '\n' || code == '\t' || code == ' ' || co
de == eof) {
setsearch "", #searchoption;
find2;
} else {
#x = x;
#y = y;
gowordtop;
#sx = x;
#sy = y;
gowordend;
#ex = x;
#ey = y;
moveto #x, #y;
$text = gettext(#sx, #sy, #ex, #ey, 0);
if (strlen($text) <= 1) {
setsearch searchbuffer, #searchoption;
} else {
setsearch $text, #searchoption;
}
hilightfound 1;
find2;
}
endmacro;
isearch:
#handle = hidemaruhandle(0);
call escape0x5c searchbuffer;
$text = $$return;
openfile "/(-9999,-9999,1,1) /h " + macrodir + "\\replace.temp.mac", noaddh
ist;
selectall;
delete;
overwrite "replacedialog \"" + $text + "\", \"\", hilight";
if (#inselect) {
overwrite ", inselect";
}
if (searchoption & 0x00000001) {
overwrite ", word";
}
if (searchoption & 0x00000002) {
overwrite ", casesense";
}
if (searchoption & 0x00000010) {
overwrite ", regular";
}
if (searchoption & 0x00000020) {
overwrite ", fuzzy";
}
if (searchoption & 0x00000080) {
overwrite ", linknext";
}
if (searchoption & 0x00000080) {
overwrite ", linknext";
}
if (searchoption & 0x00010000) {
overwrite ", masknormal";
}
if (searchoption & 0x00020000) {
overwrite ", maskcomment";
}
if (searchoption & 0x00040000) {
overwrite ", maskifdef";
}
if (searchoption & 0x00080000) {
overwrite ", maskscript";
}
if (searchoption & 0x00100000) {
overwrite ", maskstring";
}
if (searchoption & 0x00200000) {
overwrite ", masktag";
}
if (searchoption & 0x00400000) {
overwrite ", maskonly";
}
if (searchoption & 0x00800000) {
// TODO: ここの制御の方法がわからない。
// overwrite ", ";
}
if (searchoption & 0x01000000) {
overwrite ", loop";
}
if (searchoption & 0x02000000) {
overwrite ", noclose";
}
overwrite ";";
gofiletop;
insertfix "// このマクロは「" + basename2 + "」により自動生成されました。\n";
save;
setactivehidemaru #handle;
closehidemaru findhidemaru(macrodir + "\\replace.temp.mac");
// TODO: ここで複数行のハイライトを行いたい
execmacro "replace.temp.mac";
endmacro;
|
|