タブを閉じた後のマクロが実行されないNo.31249
MIC-B さん 12/06/05 14:58
 
初歩的な質問ですみませんが、解決方法を教えて下さい。

以下のようなUnicodeファイルへのタグジャンプファイルがあります。
---------- unicode.tag ----------
file1(1):
file2(1):
file3(1):
---------------------------------

このファイルをshift-jisに変換するためのマクロを、以下のように記述しました。
---------- unicodetosjis.mac ----------
setcompatiblemode 0x00;
golinetop;
tagjump;
if ( result != yes ) {
 message "タグジャンプでエラーが発生しました。";
 endmacro;
}
gofiletop;
if ( charset == 2 ) { // unicode?
 saveas basename2, sjis, cr, lf;
 if ( result != yes ) {
  message "ファイルの保存でエラーが発生しました。";
  endmacro;
 }
}
quit;
setactivehidemaru getcurrenttab( true, 0 );
down 1;
endmacro;
---------------------------------------

unicode.tagを開いてカーソールをファイル先頭に置いた状態でunicodesjis.macを実
行しました。

その結果、shift-jisに変換されたファイルは作成されるのですが、unicode.tag上の
カーソルが移動しません。(マクロ末尾の「down 1;」が実行されない)

目的としては、unicodetosjis.macをループ処理にして、unicode.tagに書かれたファ
イルを一括処理したいのですが、カーソルがいつまでも同じ行に残ったままとなるの
で無限ループとなってしまいます。

実行時にエラーも表示されないので、何が必要で何が不要なのか判断が付かずにいま
す。

この不具合の解決方法をご存じの方がいましたら、教えていただけないでしょうか?

・秀丸バージョン:8.12、64ビット、Float-Macro(統合版)
・タブモードで動作

よろしくお願いします。

[ ]
RE:31249 タブを閉じた後のマクロが実行さNo.31250
秀丸担当 さん 12/06/05 16:59
 

マクロは、アクティブな秀丸エディタが切り替わると、マクロの実行のアクティ
ブなほうに移ります。
このマクロの例の場合、途中でquit;が入っているので、その時点でタグジャン
プされた秀丸エディタが終了し、同時にマクロ実行も終了します。

何らかの作業ファイルを開いて、元の秀丸エディタに戻って、作業用の秀丸エデ
ィタを閉じる場合は、以下の様な感じにするといいです。

#hOrg=hidemaruhandle(0);

openfileやtagjump等

#hTemp=hidemaruhandle(0);
setactivehidemaru #hOrg;
closehidemaru #hTemp;

先頭に1行追加して、quitをやめてこの例のようにするといいと思います。

[ ]
RE:31250 タブを閉じた後のマクロが実行さNo.31256
MIC-B さん 12/06/06 11:49
 
早速のご回答、およびご解説ありがとうございます。

何故quit文以降の文が実行されないのか、理由が分かりました。
また、ご指摘いただいたようにマクロを修正したところ、(目的のループ処理も含め
て)期待通りの動作をさせる事ができました。

以上、ありがとうございました。

[ ]