「選択した範囲内のみ」の仕様確認No.08526
IKKI さん 15/02/04 03:11
 
秀丸担当さん、こんにちは。

選択範囲 (複数可) 内で、正規表現にマッチする文字列をすべて選択するサブルーチ
ンを書いています。
「選択した範囲内のみ」を文字単位かつ複数選択対応にしたイメージです。

それに関連して2点、仕様を確認させてください。

____hoge1____[____hoge2____
____hoge3____]____hoge4____
____hoge5____

Q1. 上記サンプルテキストで [ から ] まで範囲選択した状態で、
検索ダイアログを開いて [選択した範囲内のみ]=ON で hoge を下検索すると、1番目
の hoge がヒットします。
一方、同じ状態で
searchdown2 "hoge", inselect;
を実行すると、2番目の hoge がヒットします。
この挙動は意図した仕様であり、今後も変わらないと理解してよろしいでしょうか。

Q2. 同じ状態で
searchdown2 "hoge4_*\\n", regular, inselect;
を実行すると、hoge4____(改行) がヒットします。一方、
searchdown2 "hoge4_*\\n_*", regular, inselect;
を実行すると、何もヒットしません。
つまり、inselect 付きの検索は内部的に
 (1) 検索範囲外を含む全文を対象として検索する
 (2) ヒットした文字列全体が検索範囲内に収まっているかどうか判定する
 (3) 収まっていればヒットした扱いとし、収まっていなければヒットしなかった扱
いとする
という動作をしていると理解しましたが、正しいでしょうか。

ご教示のほどよろしくお願いいたします。

[ ]
RE:08526 「選択した範囲内のみ」の仕様確No.08528
秀丸担当 さん 15/02/04 11:55
 

Q1,Q2とも確かにそうなっていることが確認できました。

Q1については、意図的でなかったかもしれないですが、既にマクロでそういう動
作になっているので、少なくともマクロについては互換性を維持していくべきだ
と思います。
もし今後変更するとしたら、マクロでないほうの動作を変えたり、例えば文字単
位にもできるようにするとしたら、inselectはそのままで、inselect2などを追
加するということになると思います。

Q2については、言われている通りの動作になっています。

[ ]
RE:08528 「選択した範囲内のみ」の仕様確No.08529
IKKI さん 15/02/04 22:20
 
ご教示ありがとうございました。

[ ]