全置換に forceinselect は効かない?No.04639
IKKI さん 04/03/07 01:48
 
こんにちは。 IKKI です。

β21で
> マクロ
> forceinselect, inselecting を追加
を試してみました。

forceinselect は replaceall に対して無効のようですが、これは仕様でしょうか。

-------------------------
// 範囲選択して実行
forceinselect 1;
replaceall "hoge", "fuga";
message str(result) + "\n" + str(inselecting);



[ ]
RE:04639 全置換に forceinselect は効かNo.04656
Iranoan さん 04/03/08 18:22
 
 IKKI さん今日は、Iranoan です。
> forceinselect は replaceall に対して無効のようですが、これは仕様でしょうか。
 ヘルプに
> 検索ダイアログを出すときに明示的に「選択した範囲内のみ」にチェックしたり、
> 下候補、上候補するときに明示的に「選択した範囲内のみ」で動作させます。
とあり、replaceall(fast) はダイアログ・ボックスも表示しない上/下候補も
行っていないので、記載どおりの動きだと思います。replaceall(fast) は、
素直にパラメータ inselect を使えばよいですし。

 ただし、
gofiletop;
beginsel;
searchdown "search";
setsearch "beg", 0;
forceinselect 1;
finddown;
message str( result );
の動きが変です。
 上記を含め、以下全てマクロ自体をサンプル・ファイルとします。

 ほぼ同じ動きを期待して、キー操作の保存で作成した
gofiletop;
beginsel;
searchdown "search";
if( ! result )  beep;
searchdown "beg" , inselect;
if( ! result )  beep;
だと、機体どおり beg を選択します。また
gofiletop;
beginsel;
movetolineno 1, 3;
setsearch "beg", 0;
forceinselect 1;
finddown;
message str( result );
は同様に機体どおりの動作をしませんが、
movetolineno 1, 3;
beginsel;
gofiletop;
setsearch "beg", 0;
forceinselect 1;
finddown;
message str( result );
は機体どおりの動作をします。どうやらカーソル位置に対する扱いが異なるよ
うです。

[ ]
RE:04639 全置換に forceinselect は効かNo.04658
秀丸担当 さん 04/03/08 18:43
 

>forceinselect は replaceall に対して無効のようですが、これは仕様でしょうか。

replaceallは、引数でinselectが指定できるので、そちらでできるようにしよう
と思います。
他にも、searchdown等の引数でinselectが指定できるものには効かないように修
正します。

[ ]
RE:04656 全置換に forceinselect は効かNo.04680
秀丸担当 さん 04/03/09 17:44
 

> ただし、
>gofiletop;
>beginsel;
>searchdown "search";
>setsearch "beg", 0;
>forceinselect 1;
>finddown;
>message str( result );
>の動きが変です。

finddownはカーソル位置を検索開始位置としているためのようです。
仕様として微妙なところと思いましたが、searchdownは、範囲選択の先頭を検索
開始位置としているので、それに合わせるように修正しようと思います。

[ ]
RE:04680 全置換に forceinselect は効かNo.04684
Iranoan さん 04/03/09 18:17
 
 秀丸担当さん今日は、Iranoan です。
> 仕様として微妙なところと思いました
 仕様と解っていれば、それはそれでよかったのですが、
> が、searchdownは、範囲選択の先頭を検索
> 開始位置としているので、それに合わせるように修正しようと思います。
とのこと。どうも有り難うございます。

[ ]