マクロからファイルを開いたときに自動起No.07236
NORI_ さん 13/04/05 03:06
 
秀丸マクロから openfile, tagjump および directtagjump でファイルを開いたとき、
ファイルを開いた直後の自動起動マクロが動きません。


最近、以下のマクロをマクロライブラリに登録させていただきましたが、

 ・閉じたファイルを開く秀丸マクロ (ファイルヒストリ利用)
 ・タグジャンプを試み、失敗したらダイレクトタグジャンプする秀丸マクロ

この問題により、

 ・半角スペースをタブに変換する秀丸マクロ (ファイルを開いた直後の自動起動マ
クロとして…)

とうまく共存させられず、困っております。


マクロからファイルを開いた際にも、自動起動マクロを実行させる良い方法はありま
せんでしょうか?

よろしくお願いいたします。

[ ]
RE:07236 マクロからファイルを開いたときNo.07238
秀丸担当 さん 13/04/05 17:22
 

マクロでopenfile等で開いたときは、自動起動マクロは動かすことはできないで
す。
マクロ内からexecmacroでさらにマクロを呼び出すことは可能ですが、そういう
方法ではどうでしょうか。

[ ]
RE:07238 マクロからファイルを開いたときNo.07239
NORI_ さん 13/04/05 23:58
 
>マクロでopenfile等で開いたときは、自動起動マクロは動かすことはできないです。
なるほど、やはりそうですか。

>マクロ内からexecmacroでさらにマクロを呼び出すことは可能ですが、そういう
>方法ではどうでしょうか。
この方法で挑戦してみます。


ありがとうございます。

[ ]
RE:07239 マクロからファイルを開いたときNo.07241
NORI_ さん 13/04/07 00:58
 
以下のサブルーチンで解決できました。

また、execeventmacro というコマンドを提案いたします。
そして、マクロヘルプの execeventmacro のページに
 ・openfile, tagjump, directtagjump などにより開かれたファイルに対して自動
起動マクロが実行されない旨
 ・execeventmacro により明示的に自動起動マクロを呼び出すことによりそれに対
処できる旨
を記載していただけると助かります。

ご検討よろしくお願いいたします。



// 指定されたファイルを開く。
// また、ファイルを開いた直後の自動起動マクロが設定されている場合にはそれを
実行する。
// Param: string 開くファイルのパス
OPENFILE_EX:
 openfile $$1;
 call EXEC_EVENT_MACRO "Opened";
 return;

// タグジャンプする。
// それにより新しくファイルが開かれた場合、ファイルを開いた直後の自動起動マ
クロを実行する。
// Return: タグジャンプに成功した場合は true そうでなければ false
TAGJUMP_EX:
 ##count = hidemarucount;
 tagjump;
 if (!result) return false;
 if (##count < hidemarucount) call EXEC_EVENT_MACRO "Opened";
 return true;

// ダイレクトタグジャンプする。
// それにより新しくファイルが開かれた場合、ファイルを開いた直後の自動起動マ
クロを実行する。
// Return: ダイレクトタグジャンプに成功した場合は true そうでなければ false
DIRECTTAGJUMP_EX:
 ##count = hidemarucount;
 directtagjump;
 if (!result) return false;
 if (##count < hidemarucount) call EXEC_EVENT_MACRO "Opened";
 return true;

// 引数で指定した種類の自動起動マクロを実行する。
// 自動起動マクロが登録されていない場合には何もしない。
// ※このサブルーチンを実行するとレジストリが閉じられます。
// Param: string 自動起動マクロの設定を保持しているレジストリのキー名から
//               "EventMacro" プレフィックスを取り除いた文字列
EXEC_EVENT_MACRO:
 openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
 if (!result) return;

 $$macro = getregstr("EventMacro" + $$1);
 closereg;
 if ($$macro == "") return;

 execmacro $$macro;
 return;

[ ]
RE:07241 マクロからファイルを開いたときNo.07242
秀丸担当 さん 13/04/08 09:44
 

>また、execeventmacro というコマンドを提案いたします。
>そして、マクロヘルプの execeventmacro のページに
> ・openfile, tagjump, directtagjump などにより開かれたファイルに対して自動
>起動マクロが実行されない旨
> ・execeventmacro により明示的に自動起動マクロを呼び出すことによりそれに対
>処できる旨
>を記載していただけると助かります。

geteventparamやseteventnotifyの関係もあるので、単純に呼び出すだけという
わけにもいかないですが、ご意見参考にさせていただきます。
とりあえずヘルプには自動起動マクロが実行されないことやexecmacroの方法な
ども追記させていただきます。

[ ]