openfile の /n でも noaddhist でもヒスNo.09429
グズラ さん 21/06/01 15:20
 
秀丸 Ver.8.97 64bit を使用しております。

任意のマクロ(以下マクロB)を実行するマクロ(以下マクロA)を書いています。
マクロBをファイルヒストリに残したくないので、/n オプションを指定して openfil
e したのですが、ファイルヒストリに残ってしまいました。
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して)ステルスモードで開いた秀丸をclosehidema
ruして
・exitを使用しない
で期待する動作を実現することができました。ありがとうございます!

[ ]