更新中のファイルでは、マスク指定したlocNo.01460
白雲斎 さん 07/09/04 15:33
 
こんにちは、白雲斎です。
Windows XP, 秀丸エディタ 7.00β20

更新中(未保存の一時的なカラー設定も含む)のファイルでは、
マスク指定したlocalgrepができません!

-- 検証ソース --------------------------
<html><head><title>TEST</title></head><body>
<img src="foo.gif" />
<!-- <img src="comment.gif" /> -->
<img src="bar.gif" />
</body></html>
----------------------------------------

-- 検証マクロ --------------------------
searchdown "<img", masknormal, maskcomment, maskscript;
message str(result);
localgrep "<img", masknormal, maskcomment, maskscript;
// マスク指定なし、grep文ではOK
// localgrep "<img";
// grep "<img", "*.htm", "", masknormal, maskcomment, maskscript;
----------------------------------------

再現手順:
     1. 検証ソースを保存する。
     2. マクロを実行する。
        → 望む結果になる。
     3. 検証ソースを改行するなどして、更新中にする。
     4. マクロを実行する。
        → localgrepはヒットしない。

※説明のためマクロを用いましたが、画面操作でも結果は同じです。

[ ]
RE:01460 更新中のファイルでは、マスク指No.01461
Iranoan さん 07/09/04 15:52
 
 白雲斎さん今日は、Iranoan です。
> マスク指定したlocalgrepができません!
 概ね仰る動作になりました。

 さらに
> localgrep "<img", masknormal, maskcomment, maskscript;

localgrep "<img", maskcomment, maskscript;
とすると、grep できるものの、maskcomment オプションが無視され、
> a.htm(3): <img src="foo.gif" />
> a.htm(8): <!-- <img src="comment.gif" /> -->
> a.htm(13): <img src="bar.gif" />
と出力されます。また <script>〜</script> がある場合、maskscript オプ
ションについても同じです。

 マスクを指定した localgrep が出来ないというより、「(更新)」中の時に、
まともに動作していないようですね。
 ##HTML ではなく「共通」扱いで動いている気がする。

[ ]
RE:01461 更新中のファイルでは、マスク指No.01463
秀丸担当 さん 07/09/04 16:48
 

>更新中(未保存の一時的なカラー設定も含む)のファイルでは、
>マスク指定したlocalgrepができません!

確かに言われている通りになるようです。

更新中かどうかで動作が違うのは、V6.50β3での(現在の内容)でgrepの高速化の
件が影響していて、更新中でなければ一時ファイルを使わずファイルを直接見る
ためです。
過去のログサイトにある以下の件の要望で、そのようになっています。
http://hidemaruo.dip.jp:81/turukame/turukame_3/x0611326.html#11326

ちょっと残念ではありますが、localgrepでは追加の条件はできない仕様という
ことにさせていただこうと思います。
更新中でなくてもできないように変更します。
考えてみたら、一時的な設定になっている場合はどのみち対応が難しかったです。

[ ]
RE:01463 更新中のファイルでは、マスク指No.01464
Iranoan さん 07/09/04 17:11
 
 秀丸担当さん今日は、Iranoan です。
> 考えてみたら、一時的な設定になっている場合はどのみち対応が難しかったです。
 こちらは兎も角、
> ちょっと残念ではありますが、localgrepでは追加の条件はできない仕様という
> ことにさせていただこうと思います。
> 更新中でなくてもできないように変更します。
については、使い勝手を考えたら、
> 更新中かどうかで動作が違うのは、V6.50β3での(現在の内容)でgrepの高速化の
> 件が影響していて、更新中でなければ一時ファイルを使わずファイルを直接見る
> ためです。
こちらを元に戻したほうが便利なのではないでしょうか?
→どうでしょう、高速化を希望された inouen さん。
 ##もうここは読んでいらっしゃらないかもしれないなあ〜。

[ ]
RE:01464 更新中のファイルでは、マスク指No.01465
秀丸担当 さん 07/09/04 17:24
 

>> 更新中かどうかで動作が違うのは、V6.50β3での(現在の内容)でgrepの高速化の
>> 件が影響していて、更新中でなければ一時ファイルを使わずファイルを直接見る
>> ためです。
>こちらを元に戻したほうが便利なのではないでしょうか?
>→どうでしょう、高速化を希望された inouen さん。
> ##もうここは読んでいらっしゃらないかもしれないなあ〜。

便利かどうかというより、リスクはやはりあったということで、高速化はしない
ということにしてもいいかとは思います。

とはいっても、高速化をしないと常に一時ファイルを使うということになり、や
るためにはさらなる修正が必要です。
また、一時的な設定も解決できないです。

更新していないファイルをlocalgrepする場合は、ファイル名指定でgrepするこ
とでできるので、localgrepは「追加の条件」をできないことにするのがいいと
思います。

[ ]
RE:01465 更新中の localgrep+追加の条件No.01466
Iranoan さん 07/09/04 17:47
 
 秀丸担当さん今日は、Iranoan です。
> 更新していないファイルをlocalgrepする場合は、ファイル名指定でgrepするこ
> とでできるので、localgrepは「追加の条件」をできないことにするのがいいと
> 思います。
 「(現在の内容)」「(一時的な設定)」のときに使えない、特に後者について
は、「grep を実行」とした時点ではわからないので、「追加の条件」を ON
にした時に、警告を出すことになるんですよね。
 そうであるなら、「(現在の内容)」の時は、単純に禁止するのではなく、
「(更新)」されているときだけ警告を出せばよいのではないでしょうか?

 localgrep には、その点注意書きをすれば、後はコーディングで工夫すると
思います。

 「検索するファイル」でも単語補完が使えれば、それ程現在のファイルを指
定するのは面倒ではないでしょうが...。

 ここまでは私の希望ですが、逆にもし localgrep で「追加の条件」を指定
不可にするなら、mask〜 のオプションの指定は、無視するのではなく、エ
ラーにならないと気が付きにくいと思います。

[ ]
RE:01463 更新中のファイルでは、マスク指No.01467
白雲斎 さん 07/09/04 18:04
 
こんにちは“秀丸担当”さん、白雲斎です。

>更新中かどうかで動作が違うのは、V6.50β3での(現在の内容)でgrepの高速化の
>件が影響していて、更新中でなければ一時ファイルを使わずファイルを直接見る
>ためです。
>過去のログサイトにある以下の件の要望で、そのようになっています。
>http://hidemaruo.dip.jp:81/turukame/turukame_3/x0611326.html#11326
>
>ちょっと残念ではありますが、localgrepでは追加の条件はできない仕様という
>ことにさせていただこうと思います。
>更新中でなくてもできないように変更します。
>考えてみたら、一時的な設定になっている場合はどのみち対応が難しかったです。

そうですか。これが最終決定なら本当に残念です。



雑談:

・更新(未保存)    :あり/なし
・タイムスタンプ    :同じ/違う
・一時的な設定      :あり/なし(無名ファイルタイプとして保持・参照)
・clearupdated履歴  :あり/なし(内部で保持。保存で消去)
・データ・サイズ    :大きい/小さい
を判定しての、一時ファイル利用か実態ファイル参照をする。
なんて、簡単にはいかないですよね…。

高速化を求めるような巨大なファイルでは、未保存、一時的な設定などはないと
決め打ちをする!?

う〜ん、やっぱり難しいか!?

[ ]
RE:01467 更新中のファイルでは、マスク指No.01468
秀丸担当 さん 07/09/05 10:53
 

ほとんどIranoanさんの引用ですが

> 「(現在の内容)」「(一時的な設定)」のときに使えない、特に後者について
>は、「grep を実行」とした時点ではわからないので、「追加の条件」を ON
>にした時に、警告を出すことになるんですよね。

やるとしたら、警告ではなく、「(現在の内容)」のときに「追加の条件」をグ
レーにするだけです。

> そうであるなら、「(現在の内容)」の時は、単純に禁止するのではなく、
>「(更新)」されているときだけ警告を出せばよいのではないでしょうか?

それはややこしい仕様だと思います。

> localgrep には、その点注意書きをすれば、後はコーディングで工夫すると
>思います。

grep …, basename, …; とすれば現状でできるし、またはご自身で一時ファイ
ルを作ってもらえればできると思います。
仕様がどうなるにせよ、マクロに関してはどうにでもなるので大きな問題ではな
いと思います。


grepダイアログから「(現在の内容)」をする場合は、使い勝手の面で問題かも
しれないです。

> 「検索するファイル」でも単語補完が使えれば、それ程現在のファイルを指
>定するのは面倒ではないでしょうが...。

検索するファイルではファイル名の補完はできないですね。
それはそれとして別のネタということになりますが。

> ここまでは私の希望ですが、逆にもし localgrep で「追加の条件」を指定
>不可にするなら、mask〜 のオプションの指定は、無視するのではなく、エ
>ラーにならないと気が付きにくいと思います。

確かに、エラーが出ないと気づきにくいかもしれないですが、エラーで止まって
しまうのも動きが変わるので慎重に考えたほうがいいかと。


一時的な設定のことは無視して、常に一時的ではないファイルタイプ別の設定を
使うようにするというのであれば、そうさせていただきますが。

[ ]
RE:01468 更新中のファイルでは、マスク指No.01469
秀丸担当 さん 07/09/05 13:25
 

>一時的な設定のことは無視して、常に一時的ではないファイルタイプ別の設定を
>使うようにするというのであれば、そうさせていただきますが。

もう正式版にしようと思うので念のため書いておきますと、一時的な設定は無視
するということで、このようにしようと思います。

[ ]
RE:01469 更新中のファイルでは、マスク指No.01470
白雲斎 さん 07/09/05 13:51
 
こんにちは“秀丸担当”さん、白雲斎です。

>>一時的な設定のことは無視して、常に一時的ではないファイルタイプ別の設定を
>>使うようにするというのであれば、そうさせていただきますが。
>
>もう正式版にしようと思うので念のため書いておきますと、一時的な設定は無視
>するということで、このようにしようと思います。

これは、どのような意味でしょうか?
一時的な設定を無視すれば、更新中であってもマスク指定のlocalgrepを実行可
能にできるということですか?

[ ]
RE:01470 更新中のファイルでは、マスク指No.01471
秀丸担当 さん 07/09/05 13:52
 

>これは、どのような意味でしょうか?
>一時的な設定を無視すれば、更新中であってもマスク指定のlocalgrepを実行可
>能にできるということですか?

そういうことです。

[ ]
RE:01471 更新中のファイルでは、マスク指No.01472
白雲斎 さん 07/09/05 17:12
 
こんにちは“秀丸担当”さん、白雲斎です。

>>これは、どのような意味でしょうか?
>>一時的な設定を無視すれば、更新中であってもマスク指定のlocalgrepを実行可
>>能にできるということですか?
>
>そういうことです。

Ver 7.00にて、
更新中、未保存(ファイル名変更...)で問題ないことを確認しました。

[ ]
RE:01471 更新中のファイルでは、マスク指No.01474
Iranoan さん 07/09/05 18:14
 
 秀丸担当さん今日は、Iranoan です。
> >一時的な設定を無視すれば、更新中であってもマスク指定のlocalgrepを実行可
> >能にできるということですか?
>
> そういうことです。
 解りました。

[ ]