colorcode の範囲選択ビットNo.04571
にゃんこ さん 05/01/17 18:39
 
colorcode についてですが、マクロヘルプによれば…

>さらに、以下の値が組み合わされます。(OR演算された値となります)
  (中略)
>  0x100 ...範囲選択

となっていて、0x100 のビットでカーソル位置が選択中かどうか判定できるように思
われます。

でも、秀丸エディタ v4.14 の colorcode で、選択範囲でもこのビットが経たないよ
うです。

バグなのか、仕様変更時マクロヘルプの更新漏れなのか…

とあるマクロを作るのに手抜きをしたかったのですが、それが検出できないならでき
ないで構いません。
ただ急ぐマクロじゃないので、バグであっていずれ修正する…という風であれば、お
教え下さい。

[ ]
RE:04571 colorcode の範囲選択ビットNo.04572
秀丸担当 さん 05/01/17 18:46
 

>となっていて、0x100 のビットでカーソル位置が選択中かどうか判定できるように思
>われます。

範囲選択の最初にカーソルがある場合は、フラグが立ちますが、範囲選択の最後
にカーソルがある場合は、フラグは立ちません。
範囲選択の最後の場合は、対象となる文字は範囲選択の次の文字になります。
カーソル位置しか取得できないので、colorcodeで範囲選択の状態を得ることは
あまり意味が無いです。

[ ]
RE:04572 colorcode の範囲選択ビットNo.04573
にゃんこ さん 05/01/17 20:18
 
早速のご回答ありがとうございます。

そうですか。
ちょっと解釈が異なったようです。

選択範囲の先頭に moveto して、選択範囲を超えるまで right しようとしたのですが…
(意図としては、ブロック選択範囲…タブなどで反転される範囲そのもの…を color
code で捉えようと…)

上記の範囲の colorcode を見ると、一度も 0x100 が立っていなかったようです。
そういう意味で、秀丸担当さまのおっしゃる動きにもなっていないような…
最初に(後方から前方を指定している場合に備え)選択範囲先頭に moveto している
のが理由かな!?

いずれにせよ、ヘルプから私が期待した仕様ではない模様なので、忘れて下さいませ。
どうもお騒がせ致しました m(_ _)m

[ ]
RE:04573 colorcode の範囲選択ビットNo.04574
Iranoan さん 05/01/17 20:47
 
 秀丸担当さん、にゃんこさん今日は、Iranoan です。
> 選択範囲の先頭に moveto して、選択範囲を超えるまで right しようとしたので
>すが…
> (意図としては、ブロック選択範囲…タブなどで反転される範囲そのもの…を color
> code で捉えようと…)
 越えるまでなら、
moveto selendx, selendy;
とすれば良いのではないでしょうか?

 また読んでいると、にゃんこさんは誤解されていると思います。ここでの
「選択範囲」とは、範囲選択内で検索/置換をした時に、中間色で表示される
部分のことで、単純に「範囲選択」した領域ではありません。

 あと、秀丸担当さんに質問ですが、
selectline;
searchdown "(.|\n)", regular, inselect;
message str( colorcode&0x100 );
が ``「選択した範囲のみ」で動作中の範囲を中間色で表示'' の設定に依存し
ないのは、仕様ですよね。以前は依存していたような気がしたので。

[ ]
RE:04573 colorcode の範囲選択ビットNo.04575
秀丸担当 さん 05/01/18 10:46
 

範囲選択された状態で、
moveto seltopx, seltopy;
とすると、その時点で範囲選択は解除されてしまいます。
また、moveto しなかったとしても、right をすると範囲選択は解除されます。

beginselで選択開始をした場合は、movetoやrightで範囲選択は解除されません
が、移動に伴って範囲選択が変化するので意味がありません。

カーソル位置は範囲選択の先頭か最後にしか有り得ないので、範囲選択を知る目
的でcolorcodeを使うことはできないです。
seltopx, seltopy, selendx, selendy を使ってください。

[ ]
RE:04574 colorcode の範囲選択ビットNo.04576
秀丸担当 さん 05/01/18 10:49
 

> また読んでいると、にゃんこさんは誤解されていると思います。ここでの
>「選択範囲」とは、範囲選択内で検索/置換をした時に、中間色で表示される
>部分のことで、単純に「範囲選択」した領域ではありません。

0x100は単純に範囲選択した領域です。
検索の「選択した範囲内のみ」は、別のフラグになります。

> あと、秀丸担当さんに質問ですが、
>selectline;
>searchdown "(.|\n)", regular, inselect;
>message str( colorcode&0x100 );
>が ``「選択した範囲のみ」で動作中の範囲を中間色で表示'' の設定に依存し
>ないのは、仕様ですよね。以前は依存していたような気がしたので。

「選択した範囲のみ」の状態は、動作環境で実際に表示されるようにしているか
どうかに関わらず、colorcodeで得られます。

[ ]
RE:04576 colorcode の範囲選択ビットNo.04577
Iranoan さん 05/01/18 11:21
 
 秀丸担当さん今日は、Iranoan です。
> 0x100は単純に範囲選択した領域です。
> 検索の「選択した範囲内のみ」は、別のフラグになります。
 それでは、私は完全に間違えていたんですね。
 失礼しました。→にゃんこさん

 ただ inselecting はカーソル位置と関係ないですよね。ということは、中
間色の部分かどうかを知る、直接の方法はないんですね。

[ ]