[ 新規に投稿する ]

grep文について質問No.09455
izoka さん 21/06/08 20:43 [ コメントを投稿する ]
  grep文(grepdialog2) についてなのですが
カレントディレクトリに"前回のフォルダ"を指定したいのですが
前回のフォルダを知る方法はありますでしょうか?
動作環境>前回のフォルダを使う が有効でのgrepコマンド実行と同じ事をしたいです。

またこの動作環境>前回のフォルダを使う が有効かどうかを知る方法はありますでしょうか?
[ ]
RE:09455 grep文について質問No.09456
秀丸担当 さん 21/06/09 09:18 [ コメントを投稿する ]
 
grepの前回のフォルダは、grepファイルヒストリの先頭の項目で、ファイル名部分を除いた部分に相当します。
getfilehist等、他のヒストリ取得はあるのに対して、getgrepfilehistはありませんでした。
あったらいいので追加を検討します。

「前回のフォルダ」のオプションに相当するキーワード等は無いです。
なんとかするとしたら、レジストリを見て判断するしかなく、以下の場所の値で判断できます。
openreg "CURRENTUSER",@"Software\Hidemaruo\Hidemaru\Env";
#f = (getregnum("MemoryWord") & 0x0020) != 0;
closereg;
message str(#f);
[ ]
RE:09456 grep文について質問No.09457
秀丸担当 さん 21/06/10 11:10 [ コメントを投稿する ]
 
getgrepfilehistをやろうとしてみたのですが、内部的にちょっとややこしいのと、仕様が一転二転しかねないので、V8.98では見送っていずれ検討したいと思います。

詳しいことを書くと、grepダイアログが新タイプと旧タイプがあって、新タイプはフォルダ別なのに対して、旧タイプはフォルダとワイルドカードがセットになったヒストリです。
でも情報としては共通で、旧タイプの情報を元に最適となるように整理して、新タイプのヒストリ(「検索するフォルダ」のドロップダウン)を出しています。
実際の情報として存在するのは旧タイプのほうで、いまのところgetgrepfilehistをやるとしたら、旧タイプとなることを考えています。

その代わりといっては何ですが、マクロヘルプには記載されていなくて仕様にはなっていないのですが、GREP;という文もあります。
OPEN;やSAVEAS;と同様に、ダイアログを出す文なのですが、マクロとして成立していなくて、GREP;をした時点でマクロは中断されてしまいます。
事前に検索オプション等を設定してからGREP;を呼ぶだけであれば、一応なんとか使えるシーンはあると思います。
[ ]
RE:09457 grep文について質問No.09458
izoka さん 21/06/11 13:58 [ コメントを投稿する ]
  >getgrepfilehistをやろうとしてみたのですが、内部的にちょっとややこしいのと、仕様が一転二転しかねないので、V8.98では見送っていずれ検討したいと思います。
>
>詳しいことを書くと、grepダイアログが新タイプと旧タイプがあって、新タイプはフォルダ別なのに対して、旧タイプはフォルダとワイルドカードがセットになったヒストリです。
>でも情報としては共通で、旧タイプの情報を元に最適となるように整理して、新タイプのヒストリ(「検索するフォルダ」のドロップダウン)を出しています。
>実際の情報として存在するのは旧タイプのほうで、いまのところgetgrepfilehistをやるとしたら、旧タイプとなることを考えています。

getgrepfilehistの検討を頂き、ありがとうございます。
その上で実装がややこしいとの事で、ちょっと考えたのですが
私が必要としている物は直接的にはgetgrepfilehistではなく(getgrepfilehistも勿論あれば嬉しいです)
(今回は)単に、前回の検索フォルダ情報になります。

そこで
>grepの前回のフォルダは、grepファイルヒストリの先頭の項目で、ファイル名部分を除いた部分に相当します。
の内容を、grepfilebufferのように、grepfolderbuffer(仮)のようなもので呼び出せるように出来ないでしょうか?
これであれば、現在内部的に存在する引数のような気がするのですが。


>その代わりといっては何ですが、マクロヘルプには記載されていなくて仕様にはなっていないのですが、GREP;という文もあります。
>OPEN;やSAVEAS;と同様に、ダイアログを出す文なのですが、マクロとして成立していなくて、GREP;をした時点でマクロは中断されてしまいます。
>事前に検索オプション等を設定してからGREP;を呼ぶだけであれば、一応なんとか使えるシーンはあると思います。

情報ありがとうございます。
確かに使えるシーンは有るように思います。


>「前回のフォルダ」のオプションに相当するキーワード等は無いです。
>なんとかするとしたら、レジストリを見て判断するしかなく、以下の場所の値で判断できます。
>openreg "CURRENTUSER",@"Software\Hidemaruo\Hidemaru\Env";
>#f = (getregnum("MemoryWord") & 0x0020) != 0;
>closereg;
>message str(#f);

情報ありがとうございます。
ただレジストリを参照して挙動するマクロだと秀丸エディタの内部仕様変更で
互換がなくなることも想像できますので(別スレッドでも話題に出ておりましたが)
一先ず使用は見送っておくことにします。
[ ]
RE:09458 grep文について質問No.09459
izoka さん 21/06/11 14:04 [ コメントを投稿する ]
  上記投稿してからちょと思ったのですが

getgrepfilehist ←新タイプ
getgrepfilehist1 ←旧タイプ

または

getgrepfilehist のオプションとして
getgrepfilehist 0(または指定なし) で新タイプ
getgrepfilehist 1 としたら旧タイプ

のように両方扱いありきでもいいのかもしれないと思いました。
[ ]
RE:09459 grep文について質問No.09460
秀丸担当 さん 21/06/11 16:42 [ コメントを投稿する ]
 
grepfolderbufferのようなものは、表面的にそういうものがあるように見せかけてもいいです。
(実際はヒストリとしての一番目のディレクトリ部分ですが)

「前回のフォルダを使う」がOFFのときは見せかけ上は、""を返すといいと思います
そうすると、「前回のフォルダを使う」がON/OFFの判別としても使え、grep文のカレントフォルダのパラーメータにもそのまま渡せるキーワードになります。
そういうのでよければV8.98で追加しようと思います。

ヒストリの取得は、パラメータで方式を選択できてもいいかもしれません。setgrepfolderhistもセットで作ることを考えるとまたいろいろあるのですが、ご意見参考にします。
[ ]
RE:09460 grep文について質問No.09461
izoka さん 21/06/11 17:57 [ コメントを投稿する ]
  >
>grepfolderbufferのようなものは、表面的にそういうものがあるように見せかけてもいいです。
>(実際はヒストリとしての一番目のディレクトリ部分ですが)
>
>「前回のフォルダを使う」がOFFのときは見せかけ上は、""を返すといいと思います
>そうすると、「前回のフォルダを使う」がON/OFFの判別としても使え、grep文のカレントフォルダのパラーメータにもそのまま渡せるキーワードになります。
>そういうのでよければV8.98で追加しようと思います。

はい、その様な仕様で結構ですのでお願いしたいです。
ご検討、ありがとうございます。
[ ]

[ 新規に投稿する ]