geteventparam()No.04469
Iranoan さん 09/11/14 17:03
 
 秀丸担当さん今日は、Iranoan です。
・geteventparam(1) がおかしい?
  o「編集後タイマー」のマクロとして使用
  o タイマー時間を「0ms」以外にする
  の条件で、常に 0 の様です。これは仕様?
・末尾のマクロで、「やり直しのやり直し」ができなくなるようです。
 こちらの環境は、WindowsXP+IE8.0+秀丸 Ver.8.00b25 です。
//------------------------------------------------------------
begingroupundo;
message str( geteventparam( 1 ) );//おそらく引数が 1 とは限らない
endgroupundo;

[ ]
RE:04469 geteventparam()No.04474
秀丸担当 さん 09/11/16 12:48
 

>・geteventparam(1) がおかしい?
>  o「編集後タイマー」のマクロとして使用
>  o タイマー時間を「0ms」以外にする
>  の条件で、常に 0 の様です。これは仕様?

調べてみたところ、そのようになるように作ってありました。
たしか0msでないとこのイベントを使う目的の効果が得られない場合があるため
そうしたのだっと思います。
遅延があると、カーソル移動してしまい、改行を行ったその行に対しての何らか
の操作ができないためだったと思います。
ヘルプにはそのことが書かれていませんでした。ヘルプに書いておきます。

>・末尾のマクロで、「やり直しのやり直し」ができなくなるようです。
> こちらの環境は、WindowsXP+IE8.0+秀丸 Ver.8.00b25 です。

実際のやり直しの内容が無くても、begingroupundoによってやり直しバッファに
書き込まれるため、そこから「やり直しのやり直し」はできないです。
そういう仕様ということでお願いします。

[ ]
RE:04474 geteventparam()No.04476
Iranoan さん 09/11/16 14:13
 
 秀丸担当さん今日は、Iranoan です。
> たしか0msでないとこのイベントを使う目的の効果が得られない場合があるため
> そうしたのだっと思います。
> 遅延があると、カーソル移動してしまい、改行を行ったその行に対しての何らか
> の操作ができないためだったと思います。
 こういった場合の対処ということはわかりました。
 ただユーザからすると、「自動実行のマクロは、待機時間を過ぎるまで何も
操作がされなかった時に実行されることを期待する」と思います。マウス・ポ
インタが動くぐらいは問題ありませんが。

> 実際のやり直しの内容が無くても、begingroupundoによってやり直しバッファに
> 書き込まれるため、そこから「やり直しのやり直し」はできないです。
> そういう仕様ということでお願いします。
 解りました。「何も編集していない」というデータが書き込まれてしまうの
ですね。

 ただ「編集後タイマー」の場合、geteventparam() と組み合わせ、
------------------------------------------------------------
if( geteventparam( 0 ) ){
        :
        :
}
else if( geteventparam( 1 ) ){
        :
        :
}
else if( geteventparam( 2 ) ){
        :
        :
}
------------------------------------------------------------
ということは良くやると思います。更に
------------------------------------------------------------
else if( geteventparam( 1 ) ){
  if( type == ".htm" )goto HTM_Enter;
  esle ( type == ".txt" )goto TXT_Enter;
}
------------------------------------------------------------
とある種の規則で更に分岐することもあります。すると、何も編集しない分岐
は数多く発生します。現在の仕様では、マクロ全体の最初と最後に
begingroupundo, endgroupundo 文を付けると、使い勝手が悪くなり、必然と
して個々の分岐後に begingroupundo, endgroupundo 文を付けなければならな
いず、使いづらいですね。

[ ]
RE:04476 geteventparam()No.04478
秀丸担当 さん 09/11/16 14:47
 

> こういった場合の対処ということはわかりました。
> ただユーザからすると、「自動実行のマクロは、待機時間を過ぎるまで何も
>操作がされなかった時に実行されることを期待する」と思います。マウス・ポ
>インタが動くぐらいは問題ありませんが。

編集した後にカーソル移動した場合、自動起動マクロを動かす/動かさないどち
らを期待するかはわからないですが、現状で動かすようになっているので、これ
を突然変えるわけにはいかないと思うので仕様ということでお願いします。

>begingroupundo, endgroupundo 文を付けると、使い勝手が悪くなり、必然と
>して個々の分岐後に begingroupundo, endgroupundo 文を付けなければならな
>いず、使いづらいですね。

こういう場合は、やはり個々の分岐後にしていただくしかないと思います。
分岐後ということでお願いします。

[ ]
RE:04478 geteventparam()No.04482
Iranoan さん 09/11/16 21:27
 
 秀丸担当さん今日は、Iranoan です。
> 編集した後にカーソル移動した場合、自動起動マクロを動かす/動かさないどち
> らを期待するかはわからない
 ですから、「待機時間」をそういった編集やカーソル移動が行われない時間
と仕様を変えてはどうでしょう? という意味だったのですが....。
> 現状で動かすようになっているので、これ
> を突然変えるわけにはいかないと思うので仕様ということでお願いします。
 兎に角仕様ということは理解しました。

> >begingroupundo, endgroupundo 文を付けると、使い勝手が悪くなり、必然と
> >して個々の分岐後に begingroupundo, endgroupundo 文を付けなければならな
> >いず、使いづらいですね。
>
> こういう場合は、やはり個々の分岐後にしていただくしかないと思います。
> 分岐後ということでお願いします。
 解りました。

[ ]
RE:04482 geteventparam()No.04486
秀丸担当 さん 09/11/17 09:45
 

> ですから、「待機時間」をそういった編集やカーソル移動が行われない時間
>と仕様を変えてはどうでしょう? という意味だったのですが....。
>> 現状で動かすようになっているので、これ
>> を突然変えるわけにはいかないと思うので仕様ということでお願いします。
> 兎に角仕様ということは理解しました。

仕様を変えるのはまずいと思うので、やるとしたら何らかのオプションやパラ
メータを追加するということになると思います。
例えば、geteventparamで遅延している場合の元のカーソル位置を取得できるよう
にするとか。
そういう話もあるということで参考にさせていただきます。

[ ]