マクロ実行中の自動起動マクロNo.33876
h-tom さん 15/01/15 23:10
 

h-tom です。

秀丸エディタ Ver.8.50

マクロ実行中は、実行されないはずの自動起動マクロが、実行される場合があります。
確認できたのは、以下の命令を実行した場合です。
・saveexit  --> 保存直前と直後、ファイルを閉じる直前
・exit      --> ファイルを閉じる直前

//実際に使用したマクロ
//ここから
selectall;
delete;
gofiletop;
insert hidemarudir + "\n";
insert macrodir + "\n";
insert settingdir + "\n";
saveexit;  //ここを save;exit; にすると呼び出されるイベントが変わる。
endmacro;
//ここまで

WSHを使って、
  hidemaru.exe /n /h /x "test.mac" "test.txt"
という感じで呼び出していたのが悪いのかと思って、「マクロの実行」から
実行してみましたが、やはり一部の自動起動マクロが起動されます。

そちらで、再現しますか?

[ ]
RE:33876 マクロ実行中の自動起動マクロNo.33877
秀丸担当 さん 15/01/16 09:54
 

バグ情報ありがとうございます。
確かにそうなることが確認できました。
exit;するマクロ文を実行した時点でマクロが終了しているので、そうなってい
ました。
例えば以下のような感じで、exit;の時点でマクロが終了します。

message "実行される";
exit; //ここでマクロ終了
message "実行されない";

自動起動マクロができたバージョンからずっとこうなっていました。
最初からexit;でも自動起動マクロが実行されないようになっていればよかった
のですが、いま変更すると不都合が無いか心配です。
同様のことは、exitall, saveexitall, quit, quitall にもあります。

パラメータを指定できるようにして、例えば exit 1; のようにすると自動起動
マクロは実行されないようにすることは可能だと思います。
マクロの修正が必要になりますが、そういう方法ではどうでしょうか。

[ ]
RE:33877 マクロ実行中の自動起動マクロNo.33880
h-tom さん 15/01/17 00:00
 

h-tom です。

>確かにそうなることが確認できました。
>exit;するマクロ文を実行した時点でマクロが終了しているので、そうなってい
>ました。
やはりコマンドによる実際の動作(?)より、マクロの終了が先でしたか。

>同様のことは、exitall, saveexitall, quit, quitall にもあります。
>パラメータを指定できるようにして、例えば exit 1; のようにすると自動起動
>マクロは実行されないようにすることは可能だと思います。
>マクロの修正が必要になりますが、そういう方法ではどうでしょうか。
個別対処するよりも、setcompatiblemode で対処とか思いましたが、そこまで
重要な問題でも無いかな?

こちらで問題になっていたのは、「保存前後」で、カラーマーカーやら折り畳み
の保存の確認が出てしまい、自動で処理が進むはずが、止まってしまっていたと
いう状態です。
ですので、saveexit; → save;exit; で回避可能でした。

デフォルトで、自動起動マクロが実行されないのが望ましいと思いますが、今ま
で問題にならなかったので、とりあえず注意書き追加でもいいかもしれません。
(でも可能なら、メジャーバージョンアップ時にでも、変更してもらいたい。)

[ ]
RE:33880 マクロ実行中の自動起動マクロNo.33888
秀丸担当 さん 15/01/19 09:01
 

saveexit;のうちsave;のほうが問題だったということで、そういうことであれば、
言われている通りsave;exit;とすることで回避が可能でした。
今後のバージョンで実行させるかどうかを選べるようにも検討しつつ、ヘルプに
も注意書きを追記させていただきます。

[ ]