検索ヒット範囲の取得方法に関する要望No.03219
手風琴 さん 03/10/11 02:07
 
秀丸担当さんこんばんは、手風琴です。

マクロに関する要望ですが、
現状検索の表示が範囲選択モードの場合はseltopx〜selendxでヒットした範囲を
取得できますが、点滅モードの場合はそういった手段がありません。
モードによらずヒット範囲を取得する手段が欲しいです。
レジストリを書き換えて一時的に選択モードにするトリックがあることは知って
いますが、パフォーマンスが悪くなるので標準で用意していただきたいのです。

実現方法を考えてみたのですが、

 ・selxxxxに値を入れてしまうと既存のマクロとの互換性が取れなくなる
  恐れがあるので、別のキーワードを追加してそちらに値をセットする。

 ・範囲選択モードの場合にselxxxに値がセットされる動作は互換性確保の
  ためそのままとする。

というのでどうでしょうか。
ご検討ください。

[ ]
RE:03219 検索ヒット範囲の取得方法に関すNo.03230
秀丸担当 さん 03/10/14 18:29
 

>実現方法を考えてみたのですが、
>
> ・selxxxxに値を入れてしまうと既存のマクロとの互換性が取れなくなる
>  恐れがあるので、別のキーワードを追加してそちらに値をセットする。
>
> ・範囲選択モードの場合にselxxxに値がセットされる動作は互換性確保の
>  ためそのままとする。

もしやるとしたら、互換性も考えてこのような感じでいいと思います。
内部的な都合上、新しくキーワードを追加するとしたら、「ヒットした文字数」
を返すだけになります。
selendxとselendyに相当するものは得られません。
正規表現で改行が含まれる検索をした場合、即座に終端のy座標は得られなくな
ります。
という仕様ではどうでしょうか。

[ ]
RE:03230 検索ヒット範囲の取得方法に関すNo.03233
Iranoan さん 03/10/14 18:56
 
 秀丸担当さん、手風琴さん今日は、Iranoan です。
> 内部的な都合上、新しくキーワードを追加するとしたら、「ヒットした文字数」
> を返すだけになります。
> selendxとselendyに相当するものは得られません。
> 正規表現で改行が含まれる検索をした場合、即座に終端のy座標は得られなくな
> ります。
 手風琴さんがどういったことを想定して、今回の要望を出されたか不明です
が、私が selxxxx を良く使うのは、検索にヒットした範囲の文字列取得です。
 もし手風琴さんも同じことを想定されているなら、文字数しか得られないな
ら結局 right などでカーソルを移動しなければならないので、パフォーマン
スが上がりそうになりません。
 手風琴さんは、どういった目的に使われるご予定なのでしょう?

 念の為断っておくと、新しいキーワードの追加に反対なのではなく、秀丸担
当さんの仰る仕様で、「はたして実際に使われるのかしら?」と疑問に思った
ものですから。

[ ]
RE:03233 検索ヒット範囲の取得方法に関すNo.03235
IKKI さん 03/10/14 19:47
 
IKKI です。

私もマクロで検索する目的はヒットした文字列の取得である場合が多いです。
その目的に照らして考えると、 SelectFoud の設定にかかわらず使える

  ・foundtext  // ヒットした文字列を返す

のようなキーワードを新設するのがいいと思います。いかがでしょうか。

現状の gettext 関数による文字列取得は
  ・選択範囲が解除されてしまう → コードが煩雑になる
  ・処理が比較的低速 → パフォーマンス上のボトルネック
などの問題があります。これらが解消されたら嬉しいですね。

[ ]
RE:03230 検索ヒット範囲の取得方法に関すNo.03238
手風琴 さん 03/10/14 23:11
 
手風琴です。まとめてレスさせていただきます。

=>秀丸担当さん

>内部的な都合上、新しくキーワードを追加するとしたら、「ヒットした文字数」
>を返すだけになります。
>selendxとselendyに相当するものは得られません。
>正規表現で改行が含まれる検索をした場合、即座に終端のy座標は得られなくな
>ります。
>という仕様ではどうでしょうか。

うーん、それではちょっと僕の要求は満たされません。
まさにselendxとselendyに相当するものが必要でして。
範囲選択モードでやっているのと同じ事を点滅モードでもやればいいだけなので
簡単にできるのかと思ってたんですけど、どうしても難しいでしょうか。
(内部的な都合というのが今ひとつピンとこないのですが・・・)

=>Iranoanさん

> 手風琴さんがどういったことを想定して、今回の要望を出されたか不明です
>が、私が selxxxx を良く使うのは、検索にヒットした範囲の文字列取得です。
> もし手風琴さんも同じことを想定されているなら、文字数しか得られないな
>ら結局 right などでカーソルを移動しなければならないので、パフォーマン
>スが上がりそうになりません。
> 手風琴さんは、どういった目的に使われるご予定なのでしょう?

僕も主な用途は文字列の取得ですが、ヒットした範囲の終端を取得するのに使う
ときもあります。
今まさにそういうマクロを書いてる途中でして。


=>IKKIさん

>私もマクロで検索する目的はヒットした文字列の取得である場合が多いです。
>その目的に照らして考えると、 SelectFoud の設定にかかわらず使える
>
>  ・foundtext  // ヒットした文字列を返す
>
>のようなキーワードを新設するのがいいと思います。いかがでしょうか。

上に書いたような理由でこれでは僕の要求しているものの代替手段にはなりませ
ん。

しかしこれはこれであったら便利そうなんで僕も1票入れさせてもらいます。
さらにいえば foundtext "\\1" とかやるとタグ付き正規表現でヒットした部
分文字列が取得できたらなおいいですね。


以下独り言。

秀丸マクロってテキストを2次元の行列として扱うエディタ的な部分と
1次元のストリームとして扱う(扱いたい)プログラム言語的な部分との
齟齬が微妙な記述のしにくさを生んでいる用な気がします。

[ ]
RE:03235 検索ヒット範囲の取得方法に関すNo.03239
Iranoan さん 03/10/14 23:58
 
 IKKI さん今日は、Iranoan です。
>   ・foundtext  // ヒットした文字列を返す
 それでは、最初の要望は取消で、上記キーワードを要望として出すというこ
とでしょうか? それなら大賛成です。

> 現状の gettext 関数による文字列取得は
>   ・選択範囲が解除されてしまう → コードが煩雑になる
 若しくは、より汎用性があって、過去に要望も有った
(http://www.maruo.co.jp/turukame/3/x00079_.html#99)
範囲選択を解除しない gettext があると良いんですけどね。

[ ]
RE:03239 検索ヒット範囲の取得方法に関すNo.03240
手風琴 さん 03/10/15 00:22
 
手風琴です。

>>   ・foundtext  // ヒットした文字列を返す
> それでは、最初の要望は取消で、上記キーワードを要望として出すというこ
>とでしょうか? それなら大賛成です。
>

僕としては最初の要望を取り消されちゃうと困るんですが・・・。
Iranoanさんは僕の要望には消極的反対なんでしょうか?
(できれば余計な機能追加はしてくれるな、みたいな)

[ ]
RE:03238 検索ヒット範囲の取得方法に関すNo.03241
IKKI さん 03/10/15 04:11
 
IKKI です。横から口出しして話の流れを乱してしまい、失礼いたしました。
以下は脇道の話題です。

> >  ・foundtext  // ヒットした文字列を返す

> しかしこれはこれであったら便利そうなんで僕も1票入れさせてもらいます。
> さらにいえば foundtext "\\1" とかやるとタグ付き正規表現でヒットした部
> 分文字列が取得できたらなおいいですね。

それが実現したらかなり便利ですね。コードの簡素化だけでなく高速化にも役立ちそ
うです。
処理的にはおそらく置換と同じで、置換文字列をバッファに書き戻す代わりに変数に
格納することで実現できるのではないでしょうか。ぜひご検討いただきたいと思いま
す>秀丸担当様。

> 秀丸マクロってテキストを2次元の行列として扱うエディタ的な部分と
> 1次元のストリームとして扱う(扱いたい)プログラム言語的な部分との
> 齟齬が微妙な記述のしにくさを生んでいるような気がします。

賛成です。折り返し文字数の設定に影響されないように(x, y を使わないように)
書こうとすると非常に面倒な場面が多々ありますし。

[ ]
RE:03240 検索ヒット範囲の取得方法に関すNo.03242
Iranoan さん 03/10/15 12:35
 
 手風琴さん今日は、Iranoan です。
> 僕としては最初の要望を取り消されちゃうと困るんですが・・・。
> Iranoanさんは僕の要望には消極的反対なんでしょうか?
 すいません。書き手を読み違えていました。
 私個人は、使い道が思いつかないのですが(^^;、反対はしません。

[ ]
RE:03238 検索ヒット範囲の取得方法に関すNo.03245
秀丸担当 さん 03/10/15 16:53
 

>うーん、それではちょっと僕の要求は満たされません。
>まさにselendxとselendyに相当するものが必要でして。
>範囲選択モードでやっているのと同じ事を点滅モードでもやればいいだけなので
>簡単にできるのかと思ってたんですけど、どうしても難しいでしょうか。
>(内部的な都合というのが今ひとつピンとこないのですが・・・)

考えてみたところ、やっぱりできそうだったので、追加する方向でいこうと思い
ます。
foundtextはそのままgettextで代替できると思うのでやらないことにします。
タグ付きに関しては、また考えます。

[ ]
RE:03245 検索ヒット範囲の取得方法に関すNo.03246
Iranoan さん 03/10/15 17:23
 
 秀丸担当さん今日は、Iranoan です。
> foundtextはそのままgettextで代替できると思うのでやらないことにします。
 折角の機会ですのでお聞きします。
> (http://www.maruo.co.jp/turukame/3/x00079_.html#99)
> 範囲選択を解除しない gettext
の実装予定は有りますでしょうか?

[ ]
RE:03246 検索ヒット範囲の取得方法に関すNo.03253
秀丸担当 さん 03/10/16 17:41
 

>> 範囲選択を解除しない gettext
>の実装予定は有りますでしょうか?

現在のところ、予定としてはないです。

[ ]
RE:03253 検索ヒット範囲の取得方法に関すNo.03256
Iranoan さん 03/10/16 17:59
 
 秀丸担当さん今日は、Iranoan です。
> >> 範囲選択を解除しない gettext
> >の実装予定は有りますでしょうか?
>
> 現在のところ、予定としてはないです。
 そうですか。残念。

[ ]