rangeeditinが、gettextで、範囲解除されNo.06594
styth さん 11/04/03 08:05
 
 rangeeditinが、gettextで、範囲解除されてしまうみたいです。
 gettextに、第5パラメータn1に1を指定で範囲選択を維持(V5.00以降)というオプシ
ョンがありますが、何らかの方法で維持できるようにして頂けないでしょうか?
 よろしくお願いします。

[ ]
RE:06594 rangeeditinが、gettextで、範囲No.06596
秀丸担当 さん 11/04/05 09:21
 

> rangeeditinが、gettextで、範囲解除されてしまうみたいです。
> gettextに、第5ハ゜ラメータn1に1を指定で範囲選択を維持(V5.00以降)というオプ
>シ
>ョンがありますが、何らかの方法で維持できるようにして頂けないでしょうか?
> よろしくお願いします。

報告ありがとうございます。
どういう状態か把握できなかったのですが、rangeeditinによって部分編集され
た状態になっていて、そのときにgettext関数を呼ぶと、部分編集が解除されて
しまうということのように思います。

そうだとしたら、gettextを呼ぶだけではそういう状態は再現できなかったので
すが、upやdownやmovetoなど、あらゆるカーソル移動系の文を呼ぶときには解除
されることがあります。

例えば、以下のようなマクロだとしたら解除されてしまいますが、これは部分編
集の範囲から外れている場所に移動しているために解除される仕様になります。

selectline;
#x1=seltopx;
#y1=seltopy;
#x2=selendx;
#y2=selendy;
rangeeditin;
moveto #x1,#y1;
beginsel;
moveto #x2,#y2;
endsel;

このマクロの場合、moveto #x2,#y2;が部分編集の範囲から外れた場所になると
思います。

upやdownについても解除されますが、こちらの挙動はsetcompatiblemodeで挙動
を指示できます。
movetoについてはsetcompatiblemodeは関係なく、範囲から外れたところに移動
すると解除されてしまいます。

そういうことではないとしたら、状況を再現できていないと思うので、具体的な
マクロを押していただけると何かわかるかもしれません。

[ ]
RE:06596 rangeeditinが、gettextで、範囲No.06598
styth さん 11/04/05 19:01
 
>そういうことではないとしたら、状況を再現できていないと思うので、具体的な
>マクロを押していただけると何かわかるかもしれません。


 部分編集が解除されてしまうのは、gettextではなく、replaceallfastでした。
 すみません。

if ( selecting ) {
 rangeeditin;//部分編集
}
message"1";
replaceallfast "a", "b";//, inselect;
message"2";
replaceallfast "c", "d";//, inselect;
 
 上記、マクロを実行すると、message2が表示された時に、解除されています。
 inselectは、あっても同じでした。
 マクロの置換で、選択範囲を保持したいために、上のスレッドで教えて頂いた方法
です。
 (ということは、06593での発言を取り消さないといけないことになります。)
 よろしくお願いします。


[ ]
RE:06598 rangeeditinが、gettextで、範囲No.06599
K'zawa さん 11/04/05 19:50
 
stythさん、こんにちは。
K'zawaです。

マクロの先頭に、

setcompatiblemode 0x0F;

を付ければよいのではないかと思います。

[ ]
RE:06599 rangeeditinが、gettextで、範囲No.06600
styth さん 11/04/05 20:41
 
>マクロの先頭に、
>setcompatiblemode 0x0F;
>を付ければよいのではないかと思います。
 うまくいきました。ありがとうございます。
 ヘルプに、「部分編集されているときの動作を、以下の値のOR演算した値で
指定できます。」との記述がありますが、0x0Fの場合、どの設定になっているん
でしょうか?

[ ]
RE:06600 rangeeditinが、gettextで、範囲No.06601
K'zawa さん 11/04/06 10:03
 
stythさん、こんにちは。
K'zawaです。

> ヘルプに、「部分編集されているときの動作を、以下の値のOR演算した値で
>指定できます。」との記述がありますが、0x0Fの場合、どの設定になっているん
>でしょうか?

0x0F = 0x03 | 0x0C
です。

[ ]
RE:06601 rangeeditinが、gettextで、範囲No.06603
styth さん 11/04/06 19:13
 
0x0003   折りたたみを維持
0x000c   部分編集を維持

上記、両方が維持されるということですね。
ありがとうございます。

[ ]