マクロの編集後タイマーについてNo.03308
misono さん 12/07/20 09:37
 
以前、秀丸メールでカーソル移動後タイマーが、メールの編集ウインドウ以外でも動
作してしまうようであるということを報告させていただき、リストビューやツリービ
ューで動作しないように修正していただきました。

今回は、編集後タイマーなのですが同じような現象となっているようなんです。おそ
らく、仕様としては、ここでの編集というのは、エディタ上の編集のことを意味して
いると思うのですが、修正可能でしょうか。

[ ]
RE:03308 マクロの編集後タイマーについてNo.03309
秀まるお さん 12/07/20 14:58
 
 編集後タイマーですが、一応仕様上は、何かメールを書き換える操作をしたと
きに発生するタイマーのはずでして、秀丸メール本体ウィンドウ上でこれが起動
することは無いように思います。

 もし秀丸メール本体ウィンドウ上で発生するとしたら、バグじゃないかと思い
ます。

 例えば今ちょっとこちらで簡単にテストした限りは、例えばメールを選択した
タイミングとかで、この「編集後タイマー」に指定したマクロが起動されること
は無いようでした。


 メールをクリックして選択した場合とか、あと、Hキーを押してヘッダ表示
モードを切り替えたりとか、そういう操作程度では大丈夫そうでした。

 何か具体的にどういう操作をした時にマクロが起動されるのか教えて欲しいで
す。

 どういう操作のタイミングで起きるのか分からない場合は、「設定・全般的な
設定・上級者向け・動作の記録」の「秀丸メールの動作をdump.txtに記録する」
をONにしてログを取っていただけると、それの中身を僕が見れば原因が分かるか
もしれません。

[ ]
RE:03309 マクロの編集後タイマーについてNo.03310
misono さん 12/07/20 15:18
 
> もし秀丸メール本体ウィンドウ上で発生するとしたら、バグじゃないかと思い
>ます。
>
> 例えば今ちょっとこちらで簡単にテストした限りは、例えばメールを選択した
>タイミングとかで、この「編集後タイマー」に指定したマクロが起動されること
>は無いようでした。
>
>
> メールをクリックして選択した場合とか、あと、Hキーを押してヘッダ表示
>モードを切り替えたりとか、そういう操作程度では大丈夫そうでした。
>
> 何か具体的にどういう操作をした時にマクロが起動されるのか教えて欲しいで
>す。

本体ウインドウ上のメールリストビューで、デリートキーでメールを削除したと
きに、編集後タイマーが働いているように思われます。

[ ]
RE:03310 マクロの編集後タイマーについてNo.03311
秀まるお さん 12/07/20 16:35
 
 Deleteキーを押した場合の再現率は100%でしょうか。それとも100回に
1回とかだとしたら、僕もしつこくテストしてみないと再現出来ないってことな
のかなぁと思いますが…。

 こちらの環境で簡単にテストした限りは再現しないようです。

 他の環境でもテストしてら、ソースコードの見直しとかもしてみます。

 もしよかったら、「設定・設定内容の保存/復元...」で設定内容をファイルに
保存して、それを添付ファイルで送っていただけると、こちらでも簡単に再現出
来るかもしれないです。ちなみに送り先は"maruo@mitene.or.jp"です。もしよか
ったらお願いします。

[ ]
RE:03311 マクロの編集後タイマーについてNo.03312
misono さん 12/07/20 16:56
 
確かに、私の環境でも再現する場合とそうでない場合があるようです。
今のところ、使用上の実害はないので、もうしばらく自分自身で観察してみます。
どのようにすれば再現するかわかったら、またお知らせします。

[ ]
RE:03312 マクロの編集後タイマーについてNo.03313
秀まるお さん 12/07/20 17:09
 
 ソースコードの見直しもしたり、デバッガーでブレイクポイントをかけるなど
もしてみたんですが、やはりマクロが起動される気配は無さそうに思います。

 とりあえず、マクロの先頭で、

  if( event != 5 ) {
      message "編集後タイマーじゃありません。";
      endmacro;
  }
  if( ! updated ) {
      message "編集されてないのに起動されてます。";
  }
  loaddll "tkinfo.dll";
  if( dllfunc("IsHidemaruMailMain" ) ) {
      #x = x; #y = y;
      golastupdated;
      #xUpdated = x; #yUpdated = y;
      message "秀丸メール本体ウィンドウで実行されてます。" +
          "編集された箇所は、x = " + str(#xUpdated) +
          "y = " + str(#yUpdated);
      endmacro;
  }

 みたいな処理を入れていただけると何か分かるかなぁという気がします。

[ ]