マクロによる秀丸終了の抑止No.40742
(-L-) さん 23/07/28 00:04
 
Aというマクロを起動します。
Aの後始末をBというマクロで実施します。

あるファイルを開き、Aというマクロを起動します。
編集が終わったからと、そのまま秀丸を終了させてしまうことがよくあります。
Bというマクロを起動していないので後始末されていません。
再び秀丸を開いて、Bというマクロを起動する。
ということがよくあります。

Aというマクロの中で秀丸終了抑止ステータスを設定できるものでしょうか。
そのステータスのときに秀丸を終了しようとしても抑止されれば、Bというマクロを
実行(かつ、そのBのマクロなのかで終了抑止を解除)して、秀丸を終わらせること
ができます。

マクロヘルプをみたのですが、見つかりませんでした。
(マクロの自動起動にも秀丸終了時に実行するという設定がなかった)

[ ]
RE:40742 マクロによる秀丸終了の抑止No.40745
秀丸担当 さん 23/07/28 11:43
 
終了を抑止するステータスというのは無いですが、自動起動マクロとしては、[ファ
イルを閉じる直前]がそれに相当します。
例えば、[マクロ]→[マクロ登録]→[自動起動]→[ファイルを閉じる直前]に以下のよ
うなマクロを登録します。

if(event==7){
  question "閉じる?";
  if(result==false){
    showwindow 1;
    seteventnotify 1;//閉じるのを抑止
  }
}

この例では、試したらウィンドウ非表示のまま抑止するケースがあってshowwindow
1;を入れてしまいましたが、本来無くても抑止だけにできるべきでした。また調整し
ます。
マクロA,Bの実行で判断するとしたら、setstaticvariableで覚えておく方法がありま
す。
一時ファイルを作るとかであれば、existfile()で存在チェックでもいいと思います。

//マクロA
setstaticvariable "AMACRO","1";
endmacro;

//マクロB
setstaticvariable "AMACRO","";
endmacro;

//自動起動のファイルを閉じる直前
if(event==7){
  if(getstaticvariable("AMACRO")!=""){//Aマクロを実行してBマクロを実行してい
ない
    showwindow 1;
    seteventnotify 1;//閉じるのを抑止
  }
}

[ ]
RE:40745 マクロによる秀丸終了の抑止No.40751
(-L-) さん 23/07/28 22:24
 
ありがとうございます。
ファイルを閉じるだと、ファイルの種類を判断したりもしないと意図しないこともあ
りそうだったり、いろいろ考えることが多くなりそうなので本件取り下げます。

[ ]