「カーソル移動後タイマー」についてNo.37313
さん 19/04/30 15:30
 
 お世話になります。

 現在、検索実行時に秀丸リーダーで移動先を読ませようと思い、いろいろ試行錯誤
しています。
 それで、自動起動マクロの「カーソル移動後タイマー」で「geteventparam(4)」の
値が63か64だと「上候補」、「下候補」で移動されたことがわかるということまでは
わかりました。
 しかし、検索ダイアログで、「上検索」や「下検索」で移動した際は、「getevent
param(4)」の値は0になるようで、少し困っています。
 もし可能でしたら、検索ダイアログの「上検索」や「下検索」でも「geteventpara
m(4)」の値が0以外になるようにしていただくことは可能でしょうか。
 それとももっとスマートな方法があれば、教えていただけると幸いです。

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

[ ]
RE:37313 「カーソル移動後タイマー」につNo.37320
秀丸担当 さん 19/05/07 08:49
 

カーソル移動後タイマーで、キー割り当てされた「上候補」「下候補」コマンドにつ
いては、geteventparam(4)で取得できますが、検索ダイアログのときは取得できませ
んでした。
geteventparam(4)はコマンドの値の取得ですが、実行されたコマンドは検索ダイアロ
グのためでした。
次のβ版では検索ダイアログであってもgeteventparam(4)で取得できるように修正さ
せていただきます。

[ ]
RE:37320 「カーソル移動後タイマー」につNo.37321
さん 19/05/07 08:57
 
 お世話になります。

 ありがとうございます。
 よろしくお願いいたします。

 それでは。

[ ]
RE:37320 「カーソル移動後タイマー」につNo.37328
さん 19/05/09 14:25
 
 お世話になります。

 新規スレッドにしたほうがいいかとも思いましたが、関連する話題なので、こちら
で失礼します。
 秀丸エディタのβ5を入れて、検索ダイアログの上検索や下検索でgeteventparam
(4)で値が取得できることを確認しました。
 それで、マクロを作り始めているんですが、カーソル位置が前回と変わったかどう
かを調べたいと思い、「prevposx」や「prevposy」を利用しようと思いました。
 ただ、そこで1つ困ったことがあります。
 「検索」メニューの「下候補」や「上候補」を実行したときは、prevposxやprevpo
syの値が変わらないようです。
 これは、仕様ということでよろしいでしょうか。
 もしそうなら、なにかほかに以前のカーソル位置を取得する方法はありますでしょ
うか。
 カーソル位置が変化したかが取得できればいいんですが。

 以上、よろしくお願いいたします。

[ ]
RE:37328 「カーソル移動後タイマー」につNo.37329
秀丸担当 さん 19/05/09 15:58
 

検索ダイアログを出して最初に検索した直後ではprevposx,prevposyは変わりますが、
「下候補」や「上候補」コマンドでは変わらないようになっていて、prevposx,prevp
osyについてはそういう仕様ということになります。
foundtopx,foundtopyで分からないかと思って試してみましたが、これでも正確に判
断はできなさそうでした。
geteventparamで新しいパラメータの値を追加して、最後に行った検索が成功したか
どうかなどが取得できるようになったらいいと思います。
そういう取得の方法を検討したいと思います。

[ ]
RE:37329 「カーソル移動後タイマー」につNo.37330
さん 19/05/09 16:13
 
 お世話になります。

>geteventparamで新しいパラメータの値を追加して、最後に行った検索が成功したか
>どうかなどが取得できるようになったらいいと思います。
>そういう取得の方法を検討したいと思います。

 検討いただけるとのこと、ありがとうございます。
 よろしくお願いいたします。

 それでは。

[ ]
RE:37330 「カーソル移動後タイマー」につNo.37342
さん 19/05/21 11:04
 
 お世話になります。

 遅くなりましたが、Ver.8.89β6で「geteventparam(5)」を追加していただき、あ
りがとうございます。
 とりあえず、うまく動いていますが、1つだけバグと思われる挙動がありましたの
で、報告させていただきます。
 ファイルを開いた直後に下候補を実行して、検索結果にジャンプしたあと、上候補
を実行すると、実際は結果がないにもかかわらず、「geteventparam(5)」が成功した
扱いとなってしまっているようです。
 もし可能でしたら修正いただけないでしょうか。
 よろしくお願いいたします。

[ ]
RE:37342 「カーソル移動後タイマー」につNo.37344
秀丸担当 さん 19/05/21 12:52
 

ご指摘ありがとうございます
確かにその通りでした。
上候補のときにうまくいっていませんでした。
次のβ版で修正させていただきます。

[ ]
RE:37344 「カーソル移動後タイマー」につNo.37345
さん 19/05/21 12:59
 
 お世話になります。

 確認ありがとうございます。
 よろしくお願いいたします。

 それでは。

[ ]
RE:37345 「カーソル移動後タイマー」につNo.37349
さん 19/05/21 16:52
 
 お世話になります。

 すみません、もう1つ質問させてください。
 下記のようなマクロをカーソル移動後タイマーに登録して、状候補やした候補を実
行すると、バージョン判定でメッセージを表示したあと、「endmacro」しているにも
かかわらず、マクロの実行が継続しているのか、メッセージが無限に表示されてしま
うことがあります。
 こちらでやってみた限りだと、検索結果が見つからなかったときに、上記のような
現象が起きてしまうようです。
 メッセージを1度だけ表示したあと、マクロの実行を中断するにはどうしたらよい
のでしょうか。
 ※ マクロの中でバージョン判定を行う際、あえて現状では存在しないバージョン
を指定していますが、実際には8.89が入る予定です。

----- マクロサンプル -----
if( event != 6 ) {
 endmacro;
}

if( geteventparam(4) != 63 && geteventparam(4) != 64 ) {
 endmacro;
}

if( version < 890 ) {
 message "秀丸エディタのVer.8.90以降を導入してください。";
 endmacro;
}

ddeinitiate "HidemaruReader", "Read";
ddeexecute("!"+gettext(foundtopx, foundtopy, foundendx, foundendy));
ddeterminate;
----------

 以上、よろしくお願いいたします。


[ ]
RE:37349 「カーソル移動後タイマー」につNo.37350
秀丸担当 さん 19/05/21 17:21
 

試してみたところ、カーソル移動後タイマーでメッセージを出すとそうなってしまう
場合がありました。
メッセージが出ることによって、いったんフォーカスが失われ、OKでまたフォーカ
スが与えられるときに、タイミングによって実行される場合がありました。
そうならないように修正させていただきます。

[ ]
RE:37350 「カーソル移動後タイマー」につNo.37351
さん 19/05/21 17:27
 
 お世話になります。

 ありがとうございます。
 よろしくお願いいたします。

 それでは。

[ ]