[ 新規に投稿する ]

openfile の /n でも noaddhist でもヒストリに残るNo.09429
グズラ さん 21/06/01 15:20 [ コメントを投稿する ]
  秀丸 Ver.8.97 64bit を使用しております。

任意のマクロ(以下マクロB)を実行するマクロ(以下マクロA)を書いています。
マクロBをファイルヒストリに残したくないので、/n オプションを指定して openfile したのですが、ファイルヒストリに残ってしまいました。
noaddhist パラメータも試しましたが、結果は同じでした。

再現可能なマクロを以下に記します。

【マクロA】
----- ここから -----
#myhandle = hidemaruhandle(0);
$macropath = macrodir + "\\*.mac";
openfile "/h /m5 /n " + $macropath, noaddhist;    // ←ここ
#macrohandle = hidemaruhandle(0);
$macroname = basename2;
setactivehidemaru(#myhandle);
closehidemaru(#macrohandle);
execmacro $macroname;
----- ここまで -----


【マクロB】
----- ここから -----
message "OK";
----- ここまで -----

試す場合はマクロBを保存したあと、ファイルヒストリに無いファイル名にリネーム(以下マクロC)してください。
でないと保存した際に記録されたヒストリなのか、openfileした際に記録されたヒストリなのか分からなくなるからです。

マクロAを実行すると表示される「ファイルを開く」ダイアログで、マクロCを開いてください。
マクロCがファイルヒストリに記録されるはずです。

よろしくお願いします。
[ ]
RE:09429 openfile の /n でも noaddhist でもヒストリに残るNo.09433
秀丸担当 さん 21/06/01 17:27 [ コメントを投稿する ]
 
openfileでワイルドカードの指定で開くダイアログが出るときは、たしかに/nは効いていませんでした。
できるように修正します。
現状ではdisablehistory 0x01;をしておいてから、closehidemaruの後(execmacroの直前)にdisablehistory 0;に戻すといった方法があります。
[ ]
RE:09433 openfile の /n でも noaddhist でもヒストリに残るNo.09434
グズラ さん 21/06/01 17:43 [ コメントを投稿する ]
  >openfileでワイルドカードの指定で開くダイアログが出るときは、たしかに/nは効いていませんでした。
>できるように修正します。

ありがとうございます。よろしくお願いします。

>現状ではdisablehistory 0x01;をしておいてから、closehidemaruの後(execmacroの直前)にdisablehistory 0;に戻すといった方法があります。

こんなのがあったんですねー
saveas したときもファイルヒストリに残したくなかったので改めて要望しようと思っていましたが、これで要件を満たせます。
[ ]
RE:09434 openfile の /n でも noaddhist でもヒストリに残るNo.09436
グズラ さん 21/06/01 17:51 [ コメントを投稿する ]
  >>現状ではdisablehistory 0x01;をしておいてから、closehidemaruの後(execmacroの直前)にdisablehistory 0;に戻すといった方法があります。
>saveas したときもファイルヒストリに残したくなかったので改めて要望しようと思っていましたが、これで要件を満たせます。

disablehistory 0x01; して saveas したら、ファイルヒストリに記録されてしまいました。
saveas は disablehistory の対象外なのでしょうか。
[ ]
RE:09436 openfile の /n でも noaddhist でもヒストリに残るNo.09442
秀丸担当 さん 21/06/02 09:29 [ コメントを投稿する ]
 
disablehistory 0x01;は、saveasのときでも有効です。
saveasしたその瞬間は残らないですが、そのままでマクロが終了し、そのファイルを閉じたときにはまたヒストリに残ります。
disablehistoryのファイルヒストリは3パターンあって、0x0001と0x0080と0x0100があるのですが、全部合わせて0x0181;としておくと、とにかく残らないようになると思います。
[ ]
RE:09442 openfile の /n でも noaddhist でもヒストリに残るNo.09443
グズラ さん 21/06/02 11:49 [ コメントを投稿する ]
  >disablehistory 0x01;は、saveasのときでも有効です。
>saveasしたその瞬間は残らないですが、そのままでマクロが終了し、そのファイルを閉じたときにはまたヒストリに残ります。

これが原因でした。
ステルスモードで開いたファイルをexitで終わらせたので、それがヒストリに残ってしまってました。

・disablehistory 0x01; した上で
・(元の秀丸にsetactivehidemaruして)ステルスモードで開いた秀丸をclosehidemaruして
・exitを使用しない
で期待する動作を実現することができました。ありがとうございます!
[ ]

[ 新規に投稿する ]