setsearch のビット 13 の使用法No.07124
Iranoan さん 05/04/04 19:24
 
 秀丸担当さん今日は、Iranoan です。
 setsearch のビット 13 は具体的にはどういった使い方をするのでしょう?
まず、大前提としてマクロ実行後もこのビットは保持され続けるのか? すら解
らないですが(^^;。
 こちらの環境は、WindowsXP+IE6.0+秀丸 Ver.5.00β13 です。

[ ]
RE:07124 setsearch のビット 13 の使用法No.07130
秀丸担当 さん 05/04/05 10:17
 

> setsearch のビット 13 は具体的にはどういった使い方をするのでしょう?
>まず、大前提としてマクロ実行後もこのビットは保持され続けるのか? すら解
>らないですが(^^;。

このビットの目的は、従来のマクロで setsearch $a, 0; としているようなマク
ロを使った場合でも、検索文字列の強調のチェック状態が変化しないようにした
ものです。
このビットは指定のためにあるもので、状態を表すフラグではありません。

searchoptionでは常にセットされていて、
#f = searchoption;
setsearch $a, #f;
としたときに復元できるようになっています。

[ ]
RE:07130 setsearch のビット 13 の使用法No.07135
Iranoan さん 05/04/05 12:24
 
 秀丸担当さん今日は、Iranoan です。
> このビットの目的は、従来のマクロで setsearch $a, 0; としているようなマク
> ロを使った場合でも、検索文字列の強調のチェック状態が変化しないようにした
> ものです。
 ご説明有り難うございました。
 ただ個人的には、noregular オプションなどが追加されたときも、
setsearch に付いては、対処をしませんでした。これはこれでスッキリしてい
たのですが...。
http://www.maruo.co.jp/turukame/3/x01461_.html#1462

 それに、
> 検索文字列の強調のチェック状態が変化しないよう
通常検索オプションの変化に気を使うなら、
#s = searchoption;
$s = searchbuffer;
        :
        :
        :
setsearch $s, #s;
の要領で戻していると思いますが。

 ##今後、新規で作ろうとする人が余計な混乱を起こしそうだし。

[ ]
RE:07130 setsearchのビット 13の使用法No.07138
IKKI さん 05/04/05 15:18
 
IKKI です。お世話になっております。

物わかりが悪くて恥ずかしいんですが、いまだに腑に落ちません。
次のような例を考えてください。

  -------- mohan.mac --------
  // 初期状態を記憶
  #x = x;
  #y = y;
  $s = searchbuffer;
  #f = searchoption;
  // 検索を使った処理
  setsearch "mohan", 0x03;
  finddown;
  // 初期状態を復元
  moveto #x, #y;
  setsearch $s, #f;

  -------- tenuki.mac --------
  // 検索を使った処理
  setsearch "tenuki", 0x03;
  finddown;
  // 初期状態を復元していない


検索を使うマクロは mohan.mac のように検索バッファを復元すること
が推奨されています。これをきちんとやっていれば、検索ダイアログの
チェック状態が知らない間に変化することはありません(よね?)。

tenuki.mac のように検索バッファを復元しないマクロを実行したら
チェック状態が変化するのは当然で、それはマクロ側の責任です。

しかるに、 searchoption のビット 13 は tenuki.mac を実行しても
チェック状態が変化しないように設けられたものと考えられます。

tenuki.mac を救済するのであれば、他のフラグについても同様に
「変える/変えない」の制御ビットを設けなければならないのでは
ないでしょうか?

[ ]
RE:07138 setsearchのビット 13の使用法No.07144
秀丸担当 さん 05/04/05 17:08
 

>検索を使うマクロは mohan.mac のように検索バッファを復元すること
>が推奨されています。これをきちんとやっていれば、検索ダイアログの
>チェック状態が知らない間に変化することはありません(よね?)。

その通りです。

>しかるに、 searchoption のビット 13 は tenuki.mac を実行しても
>チェック状態が変化しないように設けられたものと考えられます。

これはtenukiと言われるように手抜きのための対策というより、
setsearchとfinddownを組み合わせた動作と、
searchdownを一発呼ぶときの動作、
を同じにしたいという目的と自分は考えています。

[ ]
RE:07144 setsearchのビット 13の使用法No.07153
IKKI さん 05/04/05 21:10
 
IKKI です。

まず、 tenuki という表現は不適切だったかもしれません。
「実行後に検索バッファが変わっていることを意図したマクロ」に訂正します。

> setsearchとfinddownを組み合わせた動作と、
> searchdownを一発呼ぶときの動作、
> を同じにしたいという目的と自分は考えています。

こちらについては時間をおいてコメントさせていただきます。
# 「なんかヘンだ」とは思うけど、何がヘンなのかちゃんと整理してきます。


ひとつ確認させてください。 turukame.3:07083 で秀丸担当さんがおっしゃった

> searchdown等のhilightオプションの件は、いろいろ考えると、β12の仕様のほ
> うが都合がいいです。

の「いろいろ」を、私は「tenuki.mac を救済すること※」と読んだのですが、
秀丸担当さんは具体的にどのような例をお考えだったのでしょうか。

----------------
※正確に書くと「実行後に検索バッファが変わっていることを意図したマクロを
実行しても、検索ダイアログの [検索文字列の強調] のチェック状態だけは
変わらないようにすること」

[ ]
RE:07153 setsearchのビット 13の使用法No.07159
秀丸担当 さん 05/04/06 11:38
 


>の「いろいろ」を、私は「tenuki.mac を救済すること※」と読んだのですが、
>秀丸担当さんは具体的にどのような例をお考えだったのでしょうか。

このときの「いろいろ」は、searchdownでhilightを指定しないと検索ダイアロ
グのチェック状態が解除されるとしたら…、あるいはhilightの指定は一時的な
強調の表示状態の指定だとしたら…、といういろいろだったと思います。

[ ]
RE:07144 setsearchのビット 13の使用法No.07183
あべのり さん 05/04/07 19:05
 
横から失礼します.
一連のスレッドを眺めているのですが,どうにも腑に落ちません.
少し質問させてください.

>>しかるに、 searchoption のビット 13 は tenuki.mac を実行しても
>>チェック状態が変化しないように設けられたものと考えられます。
>
>これはtenukiと言われるように手抜きのための対策というより、
>setsearchとfinddownを組み合わせた動作と、
>searchdownを一発呼ぶときの動作、
>を同じにしたいという目的と自分は考えています。

要するに
setsearch "test",0;
finddown;

searchdown "test";
とを同じ動作にしたいということですよね.

現段階ではこれはどちらも11ビットを変えないというようになってるようですが,一
方,10以下のビットは,どちらにしてもこれにより0に強制的にセットされます.
どうにも,11及び12ビットが特別扱いを受けてるように見えてなりません.何故
でしょうか.

[ ]
RE:07183 setsearchのビット 13の使用法No.07189
Iranoan さん 05/04/08 00:33
 
 秀丸担当さん、あべのりさん今日は、Iranoan です。
> 現段階ではこれはどちらも11ビットを変えないというようになってるようですが,一
> 方,10以下のビットは,どちらにしてもこれにより0に強制的にセットされます.
> どうにも,11及び12ビットが特別扱いを受けてるように見えてなりません.何故
> でしょうか.
 おそらく、画面に表示されることで目立ちやすく、ダイアログ・ボックスを
表示したときのように、実行前に ON/OFF の状態が解ることが無いからだと思
います。

 しかし現在の仕様は、やはり解りにくく直感に反しているし、マクロの作成
が面倒です。例えば、
(1) 一度 ``検索文字列の強調'' をして検索
(2) [Esc] で強調解除
(3) $s = searchbuffer;
    #s = searchoption;
    searchdown "hoge";
    setsearch $s, #s;
    を実行
(4) しっかり検索状態を元に戻しているのに、「下候補」をしても、直前に検
    索した文字列が強調されない。
(5) 強調させるには、一度ダイアログ・ボックスを開かなければならない
という、直感に反した事が起きます。

 個人的には、追加された機能については互換性保てなくても致し方ないと諦
め(^^)、
・searchdown 等は、hilight オプションだけ追加し、付いていなければビッ
  ト OFF
・13 ビットを廃止
・hilighting を追加
がスッキリすると思います。

[ ]
RE:07189 setsearchのビット 13の使用法No.07192
あべのり さん 05/04/08 02:21
 
# 秀丸担当さんが書いてないのに反応するのもどうかと思いつつ反応……

> おそらく、画面に表示されることで目立ちやすく、ダイアログ・ボックスを
>表示したときのように、実行前に ON/OFF の状態が解ることが無いからだと思
>います。
後半部分がよくわからないのですが,どういう意味ですか?

>(5) 強調させるには、一度ダイアログ・ボックスを開かなければならない
いらないつっこみかもしれませんが,メニューの「検索」→「検索文字列の強調」で
も強調させられますね.

> 個人的には、追加された機能については互換性保てなくても致し方ないと諦
>め(^^)、
>・searchdown 等は、hilight オプションだけ追加し、付いていなければビッ
>  ト OFF
>・13 ビットを廃止
>・hilighting を追加
>がスッキリすると思います。
賛成です.個人的には,この仕様の方が,互換性の観点からもいいのではないかと思
います.
というのも,この仕様を採用することにより,ver5以前に作られたマクロ内の検索は,
その大半が検索文字列の強調を解除した状態で実行されることが期待されます.従っ
て,「マクロを実行したら色が変わってビックリ」が解決出来ると思うからです.

[ ]
RE:07192 setsearchのビット 13の使用法No.07197
秀丸担当 さん 05/04/08 13:20
 

setsearchのビット13は、特別扱いです。
提案されているように、他のオプションと同様の一元化を行うと、いろいろ変更
することになります。
・検索ダイアログと置換ダイアログのチェック状態とは共通
・一時的な表示状態であるメニューのチェック状態も共通
・Escで解除するのはやめる
・検索文字列が変化すると全ての秀丸を再描画
・新規に開いた秀丸でも最初から強調されている

というか検索文字列の強調関係の要望に答えるのは、非常に疲れ、他のことに手
が回らなくなってくるので、当面このままとしたいです。

[ ]
RE:07197 setsearchのビット 13の使用法No.07201
Iranoan さん 05/04/08 14:11
 
 秀丸担当さん今日は、Iranoan です。
> というか検索文字列の強調関係の要望に答えるのは、非常に疲れ、他のことに手
> が回らなくなってくるので、当面このままとしたいです。
 それでも構いませんが、正式公開後では遅いので(^^;、不明な部分とどうし
ても戸惑う部分について書き込みます。
> 提案されているように、他のオプションと同様の一元化を行うと、いろいろ変更
> することになります。
> ・検索ダイアログと置換ダイアログのチェック状態とは共通
 11, 12 ビットが別々になっているのに何故?

> ・一時的な表示状態であるメニューのチェック状態も共通
> ・Escで解除するのはやめる
 それで良いと思います。というか、現在の仕様は、ダイアログ・ボックスで
は「検索文字列の強調」が ON になっているのに強調されない、若しくは逆の
ことが起きるので、非常に戸惑います。皆さんはその様なことは無いのでしょ
うか?
 ##少なくとも、これに関してはβ13 の動作の方がよかった。

> ・検索文字列が変化すると全ての秀丸を再描画
> ・新規に開いた秀丸でも最初から強調されている
 現在でもウィンドウ毎に強調している保存しているんですよね。それなのに
何故?

 内部が解っていないので、間違っている可能性がありますが、
・検索系のマクロ、ダイアログの状態とフラグに常に統一しアクティブ・ウィ
  ンドウの強調状態だけ変える
で、何がいけないのでしょう?

 勿論、既存のマクロで
>  ・マクロを実行したら強調が解除されてガッカリ
>  ・マクロを実行したら真っ黄色になってビックリ
となりますが、現状では新規に作成したマクロまで実行後に直感と反した動き
になります。

[ ]
RE:07192 setsearchのビット 13の使用法No.07202
Iranoan さん 05/04/08 14:12
 
 あべのりさん今日は、Iranoan です。
> > おそらく、画面に表示されることで目立ちやすく、ダイアログ・ボックスを
> >表示したときのように、実行前に ON/OFF の状態が解ることが無いからだと思
> >います。
> 後半部分がよくわからないのですが,どういう意味ですか?
 検索はダイアログボックスを表示したときに、各種オプションがどういう状
態が解りますので、仮にマクロで変えてしまっても気が付くでしょう、という
意味です。

> >(5) 強調させるには、一度ダイアログ・ボックスを開かなければならない
> いらないつっこみかもしれませんが,メニューの「検索」→「検索文字列の強調」で
> も強調させられますね.
 そうですね。
 ただ、ここの問題の本質は、
> >  ・マクロを実行したら強調が解除されてガッカリ
> >  ・マクロを実行したら真っ黄色になってビックリ
に対処するためとはいえ、マクロ実行後に状態が変わってしまっては意味がな
いでしょう、ということなので。

[ ]
RE:07201 setsearchのビット 13の使用法No.07215
秀丸担当 さん 05/04/08 17:37
 

>> ・検索ダイアログと置換ダイアログのチェック状態とは共通
> 11, 12 ビットが別々になっているのに何故?

メニューのチェック状態も共通にするとすれば、メニューは1つしかないためで
す。

> ##少なくとも、これに関してはβ13 の動作の方がよかった。

と言われるように、みなさんの意見をまとめるのは大変です。

> 現在でもウィンドウ毎に強調している保存しているんですよね。それなのに
>何故?

検索文字列と表示の内容、またメニューのチェック状態と食い違って戸惑うとい
うことを無くとしたら、そうなります。

> 内部が解っていないので、間違っている可能性がありますが、
>・検索系のマクロ、ダイアログの状態とフラグに常に統一しアクティブ・ウィ
>  ンドウの強調状態だけ変える
>で、何がいけないのでしょう?

優先すべきなのは検索ダイアログのチェック状態が勝手に変わらないようにする、
ということと考えています。
提案では、勝手に変わるので、戸惑うことになります。
しかし全てが一元化されていれば、戸惑うことも無くなると思います。

一元化は案であってβ15ではやらないです。
大変申し訳ないですが、この要望に関して考えることが非常に疲れています。
当面このままでいきたいと思います。
要望があれば、要望が満たされるかどうかはわかりませんが、書いていただけれ
ば参考にするかもしれません。

[ ]
RE:07215 setsearchのビット 13の使用法No.07218
Iranoan さん 05/04/08 18:31
 
 秀丸担当さん今日は、Iranoan です。
> >> ・検索ダイアログと置換ダイアログのチェック状態とは共通
> > 11, 12 ビットが別々になっているのに何故?
>
> メニューのチェック状態も共通にするとすれば、メニューは1つしかないためで
> す。
 私は当初、メニューの「検索文字列の強調」は、アクティブ・ウィンドウで
直前に検索した文字列の強調の ON/OFF する機能だと考えていました。そして
ダイアログ・ボックスの「検索文字列を強調」が ON の時だけ有効で、この設
定や内部的なフラグを変化させるものではないと思っていました。そう思って
いたので、
> > 現在でもウィンドウ毎に強調している保存しているんですよね。それなのに
> >何故?
という疑問がでてきます。

> 要望があれば、要望が満たされるかどうかはわかりませんが、書いていただけれ
> ば参考にするかもしれません。
 その心算で書いています。

 取り敢えず、
> しかし全てが一元化されていれば、戸惑うことも無くなると思います。
>
> 一元化は案であってβ15ではやらないです。
に一票。

 以下半分愚痴。
 先に書いたように現在の仕様だと、ダイアログ・ボックスの「検索文字列を
強調」が ON であっても、「下候補」で強調されないことがある。←繰り返し
でゴメンナサイ。その為、現在修正中の「秀丸公式マニュアル」にどうやって
説明すれば良いか解らない、という個人的な悩みがあります(^^;。(どんな時
に強調され、どんな時に強調されないか、解り易く説明できない(;_;)。)

[ ]
RE:07215 setsearchのビット 13の使用法No.07219
あべのり さん 05/04/08 18:48
 
Iranoanさんの真似ではないのですが,正式版が出てからでは遅いので.
やはりどうしても13ビットの存在意義がわかりません.

>優先すべきなのは検索ダイアログのチェック状態が勝手に変わらないようにする、
>ということと考えています。
今までのマクロにおける
$b = searchbuffer;
#o = searchoption;
(マクロ本体)
setsearch $b,#o;
ではダイアログのチェック状態は変わらないような気がするのですが.
# 無論,この処理をしていない「お行儀の悪いマクロ」は話が別ですが,
# それは今までもそうだったと思いますし.

>要望があれば、要望が満たされるかどうかはわかりませんが、書いていただけれ
>ば参考にするかもしれません。
もとよりそのつもりです.

[ ]
RE:07202 setsearchのビット 13の使用法No.07221
あべのり さん 05/04/08 19:53
 
> 検索はダイアログボックスを表示したときに、各種オプションがどういう状
>態が解りますので、仮にマクロで変えてしまっても気が付くでしょう、という
>意味です。
オプションの方はダイアログボックスを開くとわかりますよね?
setsearchで指定する方はこちらだと思っているのですが.

> そうですね。
> ただ、ここの問題の本質は、
>> >  ・マクロを実行したら強調が解除されてガッカリ
>> >  ・マクロを実行したら真っ黄色になってビックリ
>に対処するためとはいえ、マクロ実行後に状態が変わってしまっては意味がな
>いでしょう、ということなので。
了解済みです.

[ ]
RE:07221 setsearchのビット 13の使用法No.07222
Iranoan さん 05/04/08 20:28
 
 あべのりさん今日は、Iranoan です。
> > 検索はダイアログボックスを表示したときに、各種オプションがどういう状
> >態が解りますので、仮にマクロで変えてしまっても気が付くでしょう、という
> >意味です。
> オプションの方はダイアログボックスを開くとわかりますよね?
 そうです。書き方が悪かったのですが、端的に書けば、何処かに書いてあっ
たと思いますが、マクロを実行したら、
・文字列が強調されてビックリ
・強調が無くなってガッカリ
ということが、他の検索オプションに比べておきやすいからだと思います。

 といいつつ、私も現在の仕様は「何だかなあ〜」と思っていますが(^^;。

[ ]
RE:07215 強調文字列と検索のヒットが異なNo.07580
Iranoan さん 05/04/25 18:18
 
 秀丸担当さん今日は、Iranoan です。
> 大変申し訳ないですが、この要望に関して考えることが非常に疲れています。
> 当面このままでいきたいと思います。
 正式公開後では遅いので、最終的な決定が何時になるのか知りたいところで
すが、今回は別件についてです。

 本日おもしろ半分で「任意の文字列の繰り返しが検索できるか?」試そうと、
「([a-z]+)\1」の検索を行ってみました。すると strstr, abcabc 等意図通り
に検索できる事が確認できました。しかし、検索にヒットするのに、強調表示
されない部分があります。例えば AAA と合ったとき、1, 2 文字目と 2, 3 文
字目の AA に検索はヒットしますが、後者の一部に当たる 3 文字目は強調さ
れません。これは仕様ですよね。

[ ]
RE:07580 強調文字列と検索のヒットが異なNo.07595
秀丸担当 さん 05/04/26 11:01
 

> 本日おもしろ半分で「任意の文字列の繰り返しが検索できるか?」試そうと、
>「([a-z]+)\1」の検索を行ってみました。すると strstr, abcabc 等意図通り
>に検索できる事が確認できました。しかし、検索にヒットするのに、強調表示
>されない部分があります。例えば AAA と合ったとき、1, 2 文字目と 2, 3 文
>字目の AA に検索はヒットしますが、後者の一部に当たる 3 文字目は強調さ
>れません。これは仕様ですよね。

確認することができました。
正規表現では、同じ強調で重なり合う場合は先にヒットしたほうのみが強調され
るようになっています。
繰り返しだからとうわけではなく、テキストAAAに対して、正規表現のAAの強調
だけでも同様です。
正規表現でなければできます。
改善するべきかもしれないですが、現時点では仕様としておきたいです。

[ ]
RE:07595 強調文字列と検索のヒットが異なNo.07600
Iranoan さん 05/04/26 11:58
 
 秀丸担当さん今日は、Iranoan です。
> 改善するべきかもしれないですが、現時点では仕様としておきたいです。
 解りました。

[ ]