disabledraw の挙動No.09081
山紫水明 さん 16/09/15 09:56
 

秀丸担当さん,

テスト用テキスト
-----------------------
abc
abc
abc
-----------------------

次のマクロをテスト用テキストの1行目にカーソルを置いて繰り返し実行します。
disabledraw;
searchdown2 "abc";

繰り返し実行してもカーソル位置は変化しません。
次に disabledraw; をコメントアウトして実行すると,カーソルは次々に動いて
いきます。これはこのようなものでしょうか?

 Windows10+Ver.8.65β5 浮動小数点数版 32bit版です。

              山紫水明

[ ]
RE:09081 disabledraw の挙動No.09083
秀丸担当 さん 16/09/15 15:08
 

disabledrawをしたときは確かにそうなっていました。
通常はsearchdown2を連続して行う場合、現在のカーソルの状態が検索直後のヒ
ット状態かによって、次に進むかどうかが決まります。
しかしdisabledrawの場合、検索直後のカーソル状態にならないか、または解除
されるため、そうなっていました。
[動作環境]→[検索]→[検索での表示]の設定状態によっても違っていて、あてに
ならないことになっていました。

以前からそうだったようで、直すべきと思いますが、それによって動作しなくな
るマクロが出てこないか心配です。
disabledrawにパラメータを付けるかsetcompatiblemodeか何らかの方法で、検索
直後のカーソル状態がうまくいくように検討したいと思います。

現状で設定や直前の状態に関わらず一定の動作にするためには、
setcompatiblemode 0x00000100;//検索での表示=点滅表示
または
setcompatiblemode 0x00000200;//検索での表示=範囲選択
で「検索での表示」を指定しておくといいと思います。

[ ]
RE:09083 disabledraw の挙動No.09085
山紫水明 さん 16/09/15 20:45
 
 秀丸担当さん,

>以前からそうだったようで、直すべきと思いますが、それによって動作しなく
>なるマクロが出てこないか心配です。
>disabledrawにパラメータを付けるかsetcompatiblemodeか何らかの方法で、検
>索直後のカーソル状態がうまくいくように検討したいと思います。

 ご検討ありがとうございます。
 disabledraw は単に途中の描画をおさえてスピードアップするためにあると思
いますので,disabledraw有無によって,コマンド文の動作が異なってしまうの
はどうも不自然な気がしました。直すことによって障害が生じる既存マクロがあ
るかもしれないというのは多分杞憂ではないかと思いますが,断言する自信はな
いです。
 ご判断はお任せいたします。

                    山紫水明

[ ]
RE:09085 disabledraw の挙動No.09086
秀丸担当 さん 16/09/16 16:54
 

互換性の心配としては、いくつかありました。
一回のマクロ内で連続してsearchdown2したとき、以下のようなマクロで、「検
索での表示」の設定状態によって結果が違っていました。

disabledraw;
searchdown2 "abc";
searchdown2 "abc";

「点滅表示」のとき、同じ場所から2回検索してして動かないようになっていま
した。
それを前提としたマクロがあるかどうかはわからないですが、修正すると動作が
違うことになります。

あと、今まではマクロ終了時は点滅も範囲選択もせず、全体を再描画してカーソ
ルは通常の状態になります。
修正すると、点滅または範囲選択が残ることになります。

とりあえずsetcompatiblemodeで指定できるようにしてみようと思います。
setcompatiblemode 0x00800000;を追加して、上記マクロは2回進み、マクロ終
了後は点滅または範囲選択が残るようにしようと思います。

[ ]