【要望】Grepの初期フォルダについてNo.09271
Suezo さん 17/01/20 09:44
 
いつもお世話になっています。

Grepの初期フォルダについて要望があります。

・現状、Grepを実行すると、開いているファイルのフォルダが選択されます。
 チェックボックスで「検索フォルダ固定」を追加して、チェックが入っているとき
は、
 毎回同じフォルダを検索したいです。

 プロジェクトでサブフォルダがある場合、サブフォルダ内のファイルで
 Grepを実行する時、毎回、親フォルダを指定して行っているので親フォルダ固定で
 Grepを実行したい。(簡単に元に戻せるようにチェックボックス希望)

以上、検討よろしくお願いします。

[ ]
RE:09271 【要望】Grepの初期フォルダにつNo.09272
Suezo さん 17/01/20 10:03
 
フォルダ固定ではなく、親フォルダ(1つ上の階層から)から検索でもよいかも。
私の関わったプロジェクトでは、フォルダの階層が2つ以上になっていたケースはな
かったので。
フォルダ固定だと、チェックを付けたり外したりする必要があるけど
親フォルダ固定なら、常時そのままでもほとんど問題ないような。

以上、検討よろしくお願いします。

[ ]
RE:09272 【要望】Grepの初期フォルダにつNo.09273
Suezo さん 17/01/20 10:13
 
>フォルダ固定だと、チェックを付けたり外したりする必要があるけど
>親フォルダ固定なら、常時そのままでもほとんど問題ないような。

よく考えたら問題ありました。
親フォルダの下にリビジョンの違うフォルダが複数あった場合、
フォルダ数分の同一ファイルが検索されてしまいますね。
ケースバイケースでした。

[ ]
RE:09271 【要望】Grepの初期フォルダにつNo.09274
でるもんたいいじま さん 17/01/20 10:32
 
こんにちは、秀丸ユーザの「でるもんた・いいじま」です。


> ・現状、Grepを実行すると、開いているファイルのフォルダが選択されます。
>  チェックボックスで「検索フォルダ固定」を追加して、チェックが
>  入っているときは、毎回同じフォルダを検索したいです。
>
>  プロジェクトでサブフォルダがある場合、サブフォルダ内のファイルで
>  Grepを実行する時、毎回、親フォルダを指定して行っているので親フォルダ
>  固定でGrepを実行したい。(簡単に元に戻せるようにチェックボックス希望)

これですが、「プロジェクト」は2つ以上同時進行のこともありますよね。
もしそうだとすると、

プロジェクトAのフォルダの下で「検索フォルダ固定」でgrepを実行

プロジェクトAのフォルダの下でgrepしようとすると、プロジェクトAの
トップフォルダがカレントフォルダになっているので、手作業で修正。
プロジェクトBのトップフォルダが検索フォルダに固定される。

プロジェクトCのフォルダの下で(以下略)

となりませんか?

このへんの操作は、マクロヘルプをざっと読んだ限りでは、
マクロの grepdialog2 文で細かい設定を自作できるような気がします。
マクロの書き方が分かるようでしたら色々と試してみてはいかがでしょうか。

[ ]
RE:09274 【要望】Grepの初期フォルダにつNo.09275
Suezo さん 17/01/20 11:19
 
>これですが、「プロジェクト」は2つ以上同時進行のこともありますよね。
>もしそうだとすると、
>
>プロジェクトAのフォルダの下で「検索フォルダ固定」でgrepを実行
>↓
>プロジェクトAのフォルダの下でgrepしようとすると、プロジェクトAの
>トップフォルダがカレントフォルダになっているので、手作業で修正。
>プロジェクトBのトップフォルダが検索フォルダに固定される。
>↓
>プロジェクトCのフォルダの下で(以下略)
>
>となりませんか?

そうなりますが、その使い方をしたかったのです。
私も同時に2,3個のプロジェクトに関わってますが、同時に開いて作業することはほ
とんどありません。
(もしある場合はチェックを外して今まで通り)
2,3時間同一プロジェクトで集中してGrepしまくることが多々あるのでその際に、チ
ェックを入れて作業したいなあと思いました。
必要なら終わったらチェックを外すという感じで。

>このへんの操作は、マクロヘルプをざっと読んだ限りでは、
>マクロの grepdialog2 文で細かい設定を自作できるような気がします。
>マクロの書き方が分かるようでしたら色々と試してみてはいかがでしょうか。

ここ5,6年マクロは作ってないですが調べてみます。
アドバイスありがとうございました。

[ ]
RE:09273 【要望】Grepの初期フォルダにつNo.09277
秀丸担当 さん 17/01/20 13:17
 

grepの初期フォルダは一応動作環境に同じような意味となる設定があります。
[その他]→[動作環境]→[検索]→[grepダイアログ]に「前回のフォルダを使う」
があり、これをONにするとgrepを行ったときのフォルダを記憶し、固定されるこ
とになります。
ただ設定をいちいち変えるのは確かに面倒だと思います。
grepダイアログから左上の▼マークをクリック(またはAlt+Space)で「grepの
動作環境...」を選ぶことで、その場で変更することもできます。
チェックボックスが多くて、増やすとダイアログが混雑するのも気がかりです。
Alt+Spaceのメニュー項目の1つとしてあってもいいと思います。
そういうメニュー項目を検討したいと思います。

1つ上のフォルダからgrepしたいことも確かによくあります。
開くダイアログは、昔のWindowsはAlt+上矢印で1つ上に移動できなかったので
すが、最近のWindowsではAlt+上矢印で1つ上に移動できるようになっているよ
うです。
Windows2000タイプやWindows95タイプの古いものもそういう操作に変わっている
ようで、秀丸ファイラーClassicもそれに倣っていたりします。
本題ではないかもしれないですが、grepダイアログでも同じ操作ができてもいい
気がします。

[ ]
RE:09277 【要望】Grepの初期フォルダにつNo.09278
Suezo さん 17/01/20 14:01
 

>[その他]→[動作環境]→[検索]→[grepダイアログ]に「前回のフォルダを使う」
>があり、これをONにするとgrepを行ったときのフォルダを記憶し、固定されるこ
>とになります。

この設定は見逃していました。
あと、ここから設定に行けたんですね。

>ただ設定をいちいち変えるのは確かに面倒だと思います。

この設定を試してみて気付きましたが、面倒より設定してあることを忘れて実行する
のが怖いです。
これは私の要望した内容でも同様でした。

リビジョンが変わって別フォルダになったことを忘れて実行した場合、
別フォルダ内の同名ファイルで検索されそれを修正してしまう可能性があります。
(ファイル名をフルパスで出力にチェックが入っていない場合は気付けないですね)

私としてはこの設定でも十分満足なのですが、上記のミスをなくすために
Grepを実行したファイルが検索対象に含まれていない場合に警告を
出すか出さないかの設定が欲しいです。
(警告ダイアログ出してそのまま実行かキャンセルを選択)

以上、よろしくお願いします。

[ ]
RE:09275 【要望】Grepの初期フォルダにつNo.09279
でるもんたいいじま さん 17/01/20 16:19
 
でるもんた・いいじまです。

> 2,3時間同一プロジェクトで集中してGrepしまくることが多々あるので
> その際に、チェックを入れて作業したいなあと思いました。
> 必要なら終わったらチェックを外すという感じで。

なるほど。確かにその目的ならフォルダ固定機能が欲しくなりますね。

> 私も同時に2,3個のプロジェクトに関わってますが、
> 同時に開いて作業することはほとんどありません。
> (もしある場合はチェックを外して今まで通り)

ですね。せいぜい、共通のサブルーチンを同期するくらい。

#まあ、そういうサブルーチンは「共通汎用ライブラリ」とかなんとか、
#別プロジェクトで管理して、必要に応じてスクリプトで各プロジェクトの
#フォルダにコピーする、というのがスジだと思いますが。

>>このへんの操作は、マクロヘルプをざっと読んだ限りでは、
>>マクロの grepdialog2 文で細かい設定を自作できるような気がします。

> ここ5,6年マクロは作ってないですが調べてみます。

マクロヘルプをもう少し読んでみましたが、grepfilebuffer、setgrepfile
というキーワードはあっても、greppathhist() といったものはないんですよね…。
マクロで実装するにあたって技術的に難しいことではありませんが、ちょっと
込み入ったコードを書く必要がありそうです。

−−−−以下はマクロ作成用のメモ−−−−

レジストリをさがしてみると
HKEY_CURRENT_USER\Software\Hidemaruo\Hidemaru\Hidemaru.dat\GrepFileHist
に保存されているようですが、REG_BINARY型でUTF-16の文字列なので、
「getregbinaryで取得→8bit単位に区切って数値化→リトルエンディアンの
 16bit値に変換→unichar()でひたすら結合」
というサブルーチンをひとつ書く必要がありそうです。

幸いにしてサロゲートペアの結合処理は unichar() が自動的にやってくれますし、
いちど作って別ファイルに保存しておけば次回以降はそれを使うだけですが、
それでも少々面倒ですね。

あと、細かいことを言うと、WoW64とか英語版秀丸とかでは探すべきレジストリの
パスが違う、というのもあります。現状では hidemarudir から推測するしかない?

[ ]
RE:09278 【要望】Grepの初期フォルダにつNo.09280
秀丸担当 さん 17/01/20 16:40
 

固定のON/OFFをよく切り替えるとして、うっかり別のフォルダをgrepしていて気
づかないと、確かに困ると思います。
そういう警告も出せたらいいということでご意見参考にさせていただきます。

[ ]