V3.11の範囲指定のsearchupNo.10467
Makkie さん 01/11/28 21:08
 
鶴亀メールをV1.48からV1.52にアップしたろころ従来から
使っていた秀丸マクロが動かなくなりました。(このマクロは秀丸
3.10では動いています)

鶴亀メールV1.51で秀丸3.11β8のソースコードを反映、と
書いてあるのでそれが原因かと思います(秀丸3.11ではまだ確か
めていません)。

詳しくは調べる時間が今ありませんが、感じとして

    moveto 0, ある行;
    beginsel;
    golineend;
    searchup "ある正規表現", regular, inselect;

とやったとき、以前は見つかっていたものが見つからないという雰囲
気です。こういうコーディングでも非互換が発生するのでしょうか。

[ ]
RE:10467 V3.11の範囲指定のsearchupNo.10470
haru さん 01/11/29 09:53
 
関連があるかどうか定かではありませんが、手動で上検索してみた
ら、こうなりました。

例えば、

<<<テキスト始まり>>>
        #cnt1 = 0;
        while ( #cnt2 <= #y - #y0 ){
            deleteline;
            #cnt3 = #cnt4 + 1;
        }
(eof)
<<<テキスト終わり>>>

というものをshift+f3(上検索)で検索した場合、
1.cnt4 にカーソルを位置づけて、ctrl+f (検索) で検索文字列
    を cnt にして、実行すると何も起きません。
2.cnt3 に位置づけて同様に実行すると、cnt4 にヒットし反転表
    示されます。

1で何も起きないので、更にもう一回 shift+f3 を押すと、cnt3 に
ヒットします。

となります。
何か設定等があるんでしょうか? V3.11 ですが、以前のバージョン
では気が付きませんでした。

よろしくお願いします。

[ ]
RE:10470 V3.11の範囲指定のsearchupNo.10472
TAKA さん 01/11/29 12:53
 
TAKA です。

>関連があるかどうか定かではありませんが、手動で上検索してみた
>ら、こうなりました。

元発言は鶴亀なのですが、haruさんは、秀丸での確認でしょうか?
それとも、鶴亀での確認でしょうか?


>1.cnt4 にカーソルを位置づけて、ctrl+f (検索) で検索文字列
>    を cnt にして、実行すると何も起きません。

何も範囲選択されていない状態で、文字列として取り込まれた
「cnt4」の「4」の部分を削って上検索しても本来検索されるべき、
「cnt3」の「cnt」が検索されないということでしょうか?


>2.cnt3 に位置づけて同様に実行すると、cnt4 にヒットし反転表
>    示されます。

何も範囲選択されていない状態で、「上検索」したにも関わらず
「下検索」の動作をしたということでしょうか?
「cnt3」での上検索なら「cnt2」に移動するはずですが。


>何か設定等があるんでしょうか? V3.11 ですが、以前のバージョン

確かに、検索自体の見直しは入りました。
上検索では関係ない(はず)ですが、「その他→動作環境→編集→
高度な編集」に「カーソル位置の次の文字から検索を開始」という
項目も設けられましたし。(下検索時に有効)

範囲選択した状態での検索の動作も見直されました。
^^^^^^^^^^^^^^^^^^^^^^^^
(より自然な感じ?に)


鶴亀は使っていないので、何とも言えませんが、秀丸Ver3.11では
今回の問題(検索が正しくない)を再現する方法は分かりませんで
した。
いろいろな検索オプションがあるので、何かの組み合わせで問題が
あるのかもしれません。
「動作環境→ユーザーインターフェース→検索での表示」の設定の
組み合わせとか。

[ ]
RE:10472 V3.11の範囲指定のsearchupNo.10476
haru さん 01/11/29 15:29
 
TAKA さん、こんにちは。

>元発言は鶴亀なのですが、haruさんは、秀丸での確認でしょうか?
>それとも、鶴亀での確認でしょうか?
秀丸です。

>>1.cnt4 にカーソルを位置づけて、ctrl+f (検索) で検索文字列
>>    を cnt にして、実行すると何も起きません。
>何も範囲選択されていない状態で、文字列として取り込まれた
>「cnt4」の「4」の部分を削って上検索しても本来検索されるべき、
「4」の部分を削って、マウスポインタを上検索に持っていってクリ
ックでなく、キーボードで shift+f3 としても再現しませんか。
(マウスだと期待通り、cnt3 に行きます。)

>「cnt3」の「cnt」が検索されないということでしょうか?
その通りです。

>>2.cnt3 に位置づけて同様に実行すると、cnt4 にヒットし反転表
>>    示されます。
>何も範囲選択されていない状態で、「上検索」したにも関わらず
>「下検索」の動作をしたということでしょうか?
その通りです。これもキーボードで shift+f3 で操作しています。

>「cnt3」での上検索なら「cnt2」に移動するはずですが。
私もそうなると思いました。

>鶴亀は使っていないので、何とも言えませんが、秀丸Ver3.11では
>今回の問題(検索が正しくない)を再現する方法は分かりませんで
>した。
再現できないんですね。

すみません。私だけの問題かもしれません。

別の pc では、上記キーボード操作でうまくいきます。(v3.09 です
が)

[ ]
RE:10476 V3.11の範囲指定のsearchupNo.10482
TAKA さん 01/11/29 18:05
 
TAKA です。

>>>1.cnt4 にカーソルを位置づけて、ctrl+f (検索) で検索文字列
>>>    を cnt にして、実行すると何も起きません。
>>何も範囲選択されていない状態で、文字列として取り込まれた
>>「cnt4」の「4」の部分を削って上検索しても本来検索されるべき、
>「4」の部分を削って、マウスポインタを上検索に持っていってクリ
>ックでなく、キーボードで shift+f3 としても再現しませんか。
>(マウスだと期待通り、cnt3 に行きます。)

デフォルトのキー割り当てにしてキーボードで操作しましたが、再
現しませんでした。
削除方法は、検索ダイアログ表示後に「←」キー、「Delete」キー
の順で「4」を削除しました。
検索ダイアログのチェックボックスは全てOFFです。


>すみません。私だけの問題かもしれません。

他の方や秀丸担当さんのところで再現出来るといいのですが。


オプションによっては不具合があるかもしれませんので、設定内容
を書き込んでおいた方が良いと思います。
現在(Ver3.11)でも、「#10447 2001/11/27」の不具合は直ってい
ませんので。

・不具合が確認出来た、OSは?

・「その他→動作環境→ユーザーインターフェース→検索での表
 示」の設定は?

・「その他→動作環境→編集→高度な編集」の「カーソル位置の次
 の文字から検索を開始」は、ON?、OFF?

[ ]
RE:10482 V3.11の範囲指定のsearchupNo.10485
秀丸担当 さん 01/11/29 18:50
 
>>すみません。私だけの問題かもしれません。
>他の方や秀丸担当さんのところで再現出来るといいのですが。

私のところでも、手順どおりにやってみましたが、再現できま
せんでした。
マウスでボタンを押すのとキーボードで操作が違うというのが
謎です。
Shift+F3に別の機能が割り当てられているということではない
でしょうか。

[ ]
RE:10467 V3.11の範囲指定のsearchupNo.10486
秀丸担当 さん 01/11/29 18:50
 
>詳しくは調べる時間が今ありませんが、感じとして
>
>&nbsp; &nbsp; moveto 0, ある行;
>&nbsp; &nbsp; beginsel;
>&nbsp; &nbsp; golineend;
>&nbsp; &nbsp; searchup "ある正規表現", regular, inselect;
>
>とやったとき、以前は見つかっていたものが見つからないという雰囲
>気です。こういうコーディングでも非互換が発生するのでしょうか。

V3.11からは、inselectの動作が変更となりました。
改版履歴の
 ・「選択した範囲のみ」のときの動作変更。
  (3) 検索を開始する位置は、下検索のときは必ず範囲(行単位に修
  正された範囲)の先頭から。
  上検索のときは必ず範囲の末尾から。
の部分が影響しているのだと思います。

このマクロでは、範囲選択が改行まで含めて完全にされていないため、
範囲選択が0行の状態になってしまっています。
1行完全に選択するためにはbeginsel;golineend;の部分をselectline;
にするといいです。

[ ]
RE:10486 V3.11の範囲指定のsearchupNo.10489
Makkie さん 01/11/29 22:28
 
>V3.11からは、inselectの動作が変更となりました。
>改版履歴の
> ・「選択した範囲のみ」のときの動作変更。
>  (3) 検索を開始する位置は、下検索のときは必ず範囲(行単位に修
>  正された範囲)の先頭から。
>  上検索のときは必ず範囲の末尾から。
>の部分が影響しているのだと思います。
>

・・・という仕様の変更があることは理解できました。

改行まで選択すればうまくいくことも(秀丸V3.11で)確認しま
した。

ただし・・・・・・

改行まで選択しない状態で試していると、変なことがいろいろ起こり
ます。

ケース1  −  範囲選択外のものが選択される
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
---------  テスト用マクロ  ここから  ------------
//test macro
//test macro
moveto 0, 1;
beginsel;
golineend;
searchup "//test", inselect;
endmacro;
---------  テスト用マクロ  ここまで  ------------

  ・マクロを秀丸で開き、自分自身のマクロ名を指定してマクロ実行
    させます。

  ・秀丸担当さんのおっしゃるとおりなら「範囲選択が0行の状態」
    だから何も検索されないはずですが、最初の行の //test にヒッ
    トします。

ケース2  −  秀丸が死んでしまう
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
---------  テスト用マクロ  ここから  ------------
//test macro
moveto 0, 0;
beginsel;
golineend;
searchup "//test", inselect;
endmacro;
---------  テスト用マクロ  ここまで  ------------

----------------------------------------------------------------
HIDEMARU のページ違反です。
モジュール : HIDEMARU.EXE、アドレス : 0157:0045a101
Registers:
EAX=0047c6f8 CS=0157 EIP=0045a101 EFLGS=00010213
EBX=00000000 SS=015f ESP=006cf420 EBP=006cf464
ECX=0136fffc DS=015f ESI=0047fce0 FS=48df
EDX=ffffffff ES=015f EDI=000003ff GS=0000
Bytes at CS:EIP:
8b 09 c1 e9 10 23 cf 89 88 cd 10 00 00 8b 46 04
Stack dump:
bff77256 0047fce0 00000000 bff772f3
00484128 006cf8c4 01370000 000000f1
0000000c 004842a0 bff77256 0047fce0
00000000 00484128 00000000 00000000
----------------------------------------------------------------

何だか inselect の search が不安定なような感じもしますが・・・

やってみたのは Windows95 で、検索の結果=範囲選択にしてます。

[ ]
RE:10489 V3.11の範囲指定のsearchupNo.10490
ひろ さん 01/11/30 00:08
 
 Makkie さん今日は、ひろです。
 まず inselect に関しては、hidesoft.2|07839 で秀丸担当さんから、
> >ただ、3.08のマクロでは改行を含まない選択でもinselectオプショ
> >ンは効いているようですので、少なくとこの仕様だけは残しておい
> >て欲しいです。
>
> わかりました。マクロの動作には支障がないように検討しておきます。
とのお返事を頂いています。しかしどうやら行頭から行末までの選択では上
手く動かないようです。これは仕様ですか? また hidesoft.2|07839 の元の
発言をされた TAKA さんのお考えは如何でしょうか? 私個人はこういった使
い方なら、selectline を使うので、今のままでもかまいません。

 正しい動きかどうかは解りませんが、サンプルマクロは、inselect が無効
の扱いになっているようです。

> ケース2  −  秀丸が死んでしまう
 Windows98 でも確認できました。

[ ]
RE:10482 V3.11の範囲指定のsearchupNo.10492
haru さん 01/11/30 10:11
 
TAKA さん、こんにちは。

>・不具合が確認出来た、OSは?
WIN95 です。

>・「その他→動作環境→ユーザーインターフェース→検索での表
> 示」の設定は?
範囲選択、失敗したときメッセージ表示のみチェックしてあります。

>・「その他→動作環境→編集→高度な編集」の「カーソル位置の次
> の文字から検索を開始」は、ON?、OFF?
これは ON です。

これは OFF にしたら、期待通りの動きをしました。

操作は全てキーボードです。
よろしくお願いします。

[ ]
RE:10490 V3.11の範囲指定のsearchupNo.10493
TAKA さん 01/11/30 10:40
 
TAKA です。

>とのお返事を頂いています。しかしどうやら行頭から行末までの選択では上
>手く動かないようです。これは仕様ですか? また hidesoft.2|07839 の元の
>発言をされた TAKA さんのお考えは如何でしょうか? 私個人はこういった使

選択方法には2種類あり、それぞれで挙動が違うことを知っている
一部のパワーユーザーと秀丸担当さんしか理解出来ないかもしれま
せんが、一応書きます。
秀丸のソースコードからではなく、現在の動作から確認したことな
ので間違いがある部分もしれませんが、後ほど、秀丸担当さんから
正式なコメントはあると思います。

なんとなくですが、マクロ命令は、選択開始以外での選択(例えば、
マウス選択)の方に仕様が変更されてしまったようですね。
なので、選択開始以外では改行を1つも含まない場合は、「選択し
た範囲内のみ」は検索ダイアログでも触れないのと同様で、マクロ
でも有効にならないのだと思います。

私自身は、選択開始での選択もそれ以外の選択でも、同じ仕様がベ
ストだと思いますが、パワーユーザーの方が仕様の違いを使い分け
ているということで、統一出来ないのであれば、マクロ命令が選択
開始での選択、選択開始以外での選択、どちらで動作してもよいで
す。(但し、今回の問題は回避してもよい。後述。)
仕様だけ教えてもらえれば。

現状は、
searchup "//test", inselect;
endmacro;
だけのマクロであれば、マクロ実行前に「選択開始」で改行を含ま
ない選択をしていても、選択開始以外での選択と同じ動作をするよ
           ^^^^^^^^^^^^^^^^^^
うです。(検選択開始以外では改行を含まないと「選択した範囲内
のみ」をチェック出来ないため、inselectが有効にならない)

今回の原因は、そういうことだと思います。


パワーユーザーからの要望で「選択開始」での選択とそれ以外での
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
選択の仕様を同一にすることは出来ないかもしれませんが、少なく
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
とも改行を含まない選択では、「選択した範囲内のみ」をチェック
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
できるようにすれば、今回の問題は解決できると思います。
^^^^^^^^^^^^^^^^^^^^^^^^^^^
(これは、出来て欲しいという要望が既にある)

[ ]
RE:10493 V3.11の範囲指定のsearchupNo.10494
秀丸担当 さん 01/11/30 11:08
 
>ケース1  −  範囲選択外のものが選択される
>ケース2  −  秀丸が死んでしまう

Makkieさんのこちらのマクロの不具合は再現できました。
申し訳ありません。直しておきます。

そしてひろさんの言われている、
>> わかりました。マクロの動作には支障がないように検討しておきます。
>とのお返事を頂いています。しかしどうやら行頭から行末までの選択では上
>手く動かないようです。これは仕様ですか?
という点についても、そうするように検討することになっていました。
大変申し訳ないです。

改行を含まないような選択でも、1行の選択のinselectが可能にし、
バグも修正するようにします。
この点だけを修正しV3.12を出したいと思います。

[ ]
RE:10492 V3.11の範囲指定のsearchupNo.10496
TAKA さん 01/11/30 11:27
 
TAKA です。

>>・「その他→動作環境→編集→高度な編集」の「カーソル位置の次
>> の文字から検索を開始」は、ON?、OFF?
>これは ON です。
>
>これは OFF にしたら、期待通りの動きをしました。

うーん。何故だろう。


>操作は全てキーボードです。

Windows2000で、オリジナルファイル「DEFAULT.KEY」を使って、
キー割り当て、haruさんと同じ設定にしましたが、確認出来ません
でした。
「#10485」で秀丸担当さんが言われているとおり、「Shift+F3」に
別の機能を割り当てている可能性がありそうです。

Win95固有の問題とも思えません。
誰か、Win95で確認できる人いませんか。 > ALL

[ ]
RE:10494 V3.11の範囲指定のsearchupNo.10497
TAKA さん 01/11/30 11:35
 
TAKA です。

>改行を含まないような選択でも、1行の選択のinselectが可能にし、
>バグも修正するようにします。

何度もすみませんが。同時に対応可能なら、選択開始以外での選択
で、改行を含まない場合に「選択した範囲内のみ」をチェック出来
るようにして頂けると、喜ぶ人が多数いると思います。

[ ]
RE:10494 Ver.3.12 範囲指定の検索系マクNo.10498
ひろ さん 01/11/30 14:24
 
 秀丸担当さん今日は、ひろです。
> バグも修正するようにします。
> この点だけを修正しV3.12を出したいと思います。
 Ver.3.12 浮動小数点版にて修正を確認しました。早速の修正有り難うござ
います。

 ただ今頃ですが、気になったことがでてきました。別に仕様でも構わない
のですが、お答えを頂ければ幸いです。
(1)表示される中間色は行全体となります。これは仕様ですか?
(2)置換の場合はどうなるのでしょうか? 手元で確認した範囲では、行頭方向
は正しい判定ですが、行末方向は狂いがでます。末尾にサンプルを記載します。

//test macro //test
//test
moveto 1, 0;
beginsel;
golineend2;
left 2;
replacedown "//test","", inselect;
while(result)finddown;
endmacro;

[ ]
RE:10494 V3.11の範囲指定のsearchupNo.10506
Makkie さん 01/11/30 20:59
 
>改行を含まないような選択でも、1行の選択のinselectが可能にし、
>バグも修正するようにします。
>この点だけを修正しV3.12を出したいと思います。

Makkieです。

V3.12で、もともとおかしくなったマクロが以前のように動作す
ることを確認しました(Windows2000で)。

また hidesoft/2/10185で私が指摘した点を含めてV3.08以前と同
じ動きをするようになったようです。

素早い対応をありがとうございました。

[ ]
RE:10496 V3.11の範囲指定のsearchupNo.10508
haru さん 01/11/30 22:16
 
>誰か、Win95で確認できる人いませんか。 > ALL

私がコメントするのもなんですが、
別のパソコン(win95)で実行した所、やはり同じ症状が出ます。

[ ]
RE:10497 V3.11の範囲指定のsearchupNo.10520
秀丸担当 さん 01/12/03 16:57
 
>何度もすみませんが。同時に対応可能なら、選択開始以外での選択
>で、改行を含まない場合に「選択した範囲内のみ」をチェック出来
>るようにして頂けると、喜ぶ人が多数いると思います。

現在のこの仕様は、いろいろ多数の要望の結果、このようになって
います。慎重に考えたいと思います。

[ ]
RE:10498 Ver.3.12 範囲指定の検索系マクNo.10521
秀丸担当 さん 01/12/03 16:57
 
>(1)表示される中間色は行全体となります。これは仕様ですか?

行全体となるようにしています。
なぜ今頃?

>(2)置換の場合はどうなるのでしょうか? 手元で確認した範囲では、行頭方向
>は正しい判定ですが、行末方向は狂いがでます。末尾にサンプルを記載します。

これは left2 しているのに、replacedownでは範囲の外まで置換して
しまっているのが問題ということでしょうか?
それならば仕様通りということになります。
「\n」を含む場合ちょっと問題がありますが、改善したいと思います。

[ ]
RE:10521 Ver.3.12 範囲指定の検索系マクNo.10531
ひろ さん 01/12/03 17:53
 
 秀丸担当さん今日は、ひろです。
> >(1)表示される中間色は行全体となります。これは仕様ですか?
>
> 行全体となるようにしています。
> なぜ今頃?
 仕様ならそれで構わないのですが、この場合中間色の範囲と実際に検索し
た範囲が異なっているので、それでよいのか? ということです。βの時にこ
ういった場合を考えていませんでした。

> >(2)置換の場合はどうなるのでしょうか? 手元で確認した範囲では、行頭方向
> >は正しい判定ですが、行末方向は狂いがでます。末尾にサンプルを記載します。
>
> これは left2 しているのに、replacedownでは範囲の外まで置換して
> しまっているのが問題ということでしょうか?
> それならば仕様通りということになります。
 了解しました。この場合は、検索と置換の場合では、何処までを検索範囲
とするかが違うのですね。

[ ]
RE:10531 Ver.3.12 範囲指定の検索系マクNo.10555
秀丸担当 さん 01/12/04 16:50
 
> 了解しました。この場合は、検索と置換の場合では、何処までを検索範囲
>とするかが違うのですね。

検索も置換も、行単位で変わりはありません。
どこか、勘違いしている部分があるのかも?
サンプルのマクロで、replacedownをsearchdownに変えても、1行目の
最後の"//test"にヒットします。

ちなみにこのマクロをテストしていたら「選択した範囲内のみ」が解除
されうないという別のバグを発見してしまいましたので直しておきます。

[ ]
RE:10555 Ver.3.12 範囲指定の検索系マクNo.10561
ひろ さん 01/12/04 17:51
 
 秀丸担当さん今日は、ひろです。
> サンプルのマクロで、replacedownをsearchdownに変えても、1行目の
> 最後の"//test"にヒットします。
 確かに仰るとおりですね。何故か searchdown の場合はヒットしないと思
い込んでいました。お手数をおかけして申し訳ありませんでした。

[ ]