[要望事項]ファイルサーチ機能追加No.03023
inouen さん 03/09/23 11:36
 
inouenです。

今頃になって...とは思いますが要望事項を追加させて下さい。

A. ファイルを開くにて [サブフォルダも検索]指定機能を追加する。
  (エクスプローラの検索機能と同様)
B. grepの実行にて[ファイルを検索]指定機能を追加する。
  (チェックマーク追加)
C. ダイレクトタグジャンプ機能と同様な
   [ダイレクトファイルジャンプ]機能を追加する。
  用途:"include abcdef.h",  "import abcdef.java"
          methodabc(ClassABC parmabc);   ==> ClassABC.java
    等の対象ファイルtagsファイルのあるdirectory, 及びその下位
  directoryをサーチして開く。
  チェック後、元のファイルに戻る。
                [バックタグジャンプ]を共用?
  
エクスプローラを使えばもちろん出来るのですが、秀丸の使い勝手を
良くする意味で、どれか一つでも追加して頂けたらと思います。
よろしくお願いします。

[ ]
RE:03023 [要望事項]ファイルサーチ機能追No.03024
アルビレオ さん 03/09/23 13:37
 
秀丸ユーザーのアルビレオです。

>B. grepの実行にて[ファイルを検索]指定機能を追加する。
>  (チェックマーク追加)

設定を工夫すれば今のgrepでも可能です。

検索文字列:.*
単語の検索:OFF
正規表現:ON
サブフォルダも検索:ON
ファイル名一覧だけを作成:ON

として、「検索するファイル」に探したいファイル名を入力します。
当然ワイルドカードも使えます。

>エクスプローラを使えばもちろん出来るのですが、秀丸の使い勝手を
>良くする意味で、どれか一つでも追加して頂けたらと思います。
>よろしくお願いします。

エクスプローラの検索結果からアイコンを選択し、「送る」メニューを使って簡
単に開くことができるので、秀丸からエクスプローラのファイル検索を起動する
マクロを作った方が便利でしょう。

explorer.exeにDDEコマンドとしてOpenFindFile(%1,%I)を送ればいいみたいです。
Win98,Win2000で同じでした。
あとはやる気のある方にお願いします。

[ ]
RE:03024 [要望事項]ファイルサーチ機能追No.03032
Iranoan さん 03/09/24 14:13
 
 inouen さん今日は、Iranoan です。
> A. ファイルを開くにて [サブフォルダも検索]指定機能を追加する。
 他の多くのソフトウェアが採用しているならは無しは別ですが、そうでなけ
ればエクスプローラの機能をエディタが搭載するというのは賛成できません。

>   用途:"include abcdef.h",  "import abcdef.java"
>           methodabc(ClassABC parmabc);   ==> ClassABC.java
 前者は、環境変数 PATH, INCLUDE の値や秀丸の設定で動きが変わってきま
すが、基本的に「...を秀丸で開く」で実現できます。関連付けがされていれ
ば、「...を開く」や「ダイレクトタグジャンプ」でも同じです。
 後者は JAVA でしか意味のない機能を、汎用エディタに求めるのはちょっと
違うのでは?
 どちらにしても、これらは本体の機能ではなくマクロを書かれた方が、自分
に馴染む機能になると思います。

[ ]
RE:03023 [要望事項]ファイルサーチ機能追No.03036
秀丸担当 さん 03/09/24 17:53
 

>エクスプローラを使えばもちろん出来るのですが、秀丸の使い勝手を
>良くする意味で、どれか一つでも追加して頂けたらと思います。
>よろしくお願いします。

検討させていただきます。とりあえず今回はやりません。

[ ]
RE:03036 [要望事項]ファイルサーチ機能追No.03105
inouen さん 03/09/26 22:28
 
アルビレオさん。

 ファイル名一覧の機能は時々使ってはいましたが、
それでも数十行になったりして、出来ればファイルサーチ機能が
あればと思っていました。

iranoanさん

 "ClassABC==>ClassABC.java" ではたしかに
JAVAでしか意味のない機能になってしまいますね。

 grep:検索するファイル[*.c;*.cc;*.cpp;*.h;*.java]
指定と同等機能の代表例のつもりでした。
ClassABC==>ClassABC.* 等とすべきでした。

出来れば 指摘いただきましたようにマクロ機能を自由に使い
こなせればよいのですが、キーボード記録、再生のレベルに
止まっています。

directory treeをたどる機能は、すでにtagsファイル作成機能として
あるので、数十行の追加で比較的容易に実現出来るものと
考えていました。

汎用エディタにも作業量とメリットを考えた上で
出来るものは追加して頂けたらと思います。

秀丸担当さん

>検討させていただきます。とりあえず今回はやりません。

次の機会によろしくお願いします。

[ ]
RE:03105 [要望事項]ファイルサーチ機能追No.03108
アルビレオ さん 03/09/26 23:27
 
アルビレオです。

> ファイル名一覧の機能は時々使ってはいましたが、
>それでも数十行になったりして、出来ればファイルサーチ機能が
>あればと思っていました。

ええと…それならファイルサーチでも検索結果が数十個並ぶわけですよね?
結果がダイアログ内のアイコンとして出てくるか、テキストで出力されるかとい
う違いだけで、それほど使い勝手に差が出るとは思えないのですが。

>>検討させていただきます。とりあえず今回はやりません。

先の話というのは承知の上で。

現行のようなダイアログに安易にサブフォルダを含めたファイルリストを出すと
ファイルがどのフォルダにあるのか非常にわかりにくく、同じ名前のファイルが
いくつも並んだりする危険があることには注意してください。
まともに使えるものにするには、サブフォルダを含めたものを表示するためにエ
クスプローラのファイル検索結果に似たフォルダ名(ファイルパス)の項を持った
表示形式にする必要があると思います。

そこで提案なんですが、#03024で書いたようにexplorer.exeのOpenFindFileを呼
び出すボタンを追加する形にしてはどうでしょうか?
Win2KやXPだと日付けやファイルサイズなどを検索条件として使えますし、イン
デックスサービスを使った検索もできるようになります。(インデックスサービ
スには鶴亀と相性の問題があるようですが)
秀丸のダイアログからでないとできない、文字コードを指定したり閲覧モードで
開いたりできないのが玉にキズですが。

[ ]
RE:03108 [要望事項]ファイルサーチ機能追No.03112
inouen さん 03/09/27 12:33
 
inouenです。

>ええと…それならファイルサーチでも検索結果が数十個並ぶわけですよね?
>結果がダイアログ内のアイコンとして出てくるか、テキストで出力されるかとい
>う違いだけで、それほど使い勝手に差が出るとは思えないのですが。
>
>>>検討させていただきます。とりあえず今回はやりません。
>
>先の話というのは承知の上で。
>
>現行のようなダイアログに安易にサブフォルダを含めたファイルリストを出すと
>ファイルがどのフォルダにあるのか非常にわかりにくく、同じ名前のファイルが
>いくつも並んだりする危険があることには注意してください。

grep機能の "ファイル名一覧だけ作成"では "ClassABC"のstringが使われているフ
ァイルは
すべてリストアップされます(1行ー数十行)。

今回要求のgrepに "ファイルを検索" のオプション設定を追加するとしているのは
空白、タブで区切られたstringを取り出し、その中にperiodが含まれている場合、
そのstringを、periodがない場合は後に".*"を追加したstringをファイル名とし、
指定directoryおよびそのsubdirectoryをサーチし、
対応ファイルを開くといったことを考えています。
したがって通常1個のファイルのみがリストアップ されると思います。

同一名の複数バージョンのファイル、同一名の異なった内容のファイルが
別々のsubdirectoryに複数あれば別ですが

この同一名ファイルの危険性は tagsファイルで同一のファイル名の
ものがあった場合の危険性と同じでtagsファイルの機能は問題なく
使われているので 特に気にしなくても良いのではと考えます。

ダイレクトファイルジャンプの機能は、上記のようにstringを設定し、
現在のdirectory、次に動作環境のパスー環境ーtagsファイルにて指定されている
tagsファイルのあるdirectory、及びそのsubdirectoryをサーチし、
開く機能を考えています。

C++,Java等でClass名==File名(*.cpp, *.java...) としては出てくるが、
関数名としては出てこないもの等はtagsファイルには出力されません。
include file: *.h 等は元々 tagsファイルには出力されません。

これらのファイル参照機能が ダイレクトタグジャンプと同様に
1アクションで行え、元に戻れたらと考えたわけです。
この機能はダイレクトタグジャンプの機能と比べると、
たしかに使用頻度は少ないのですが

これらも 作業量とメリットを考えて、
後は秀丸担当さんにお願いしたいと思います。


追記
コメント投稿欄の出力幅を サポートフォーラムの表示幅まで広げて
いただくようお願いします。
現在、投稿幅が小さく、引用の場合など見難くなっていますので。

[ ]
RE:03112 [要望事項]ファイルサーチ機能追No.03114
アルビレオ さん 03/09/27 15:37
 
アルビレオです。

>>現行のようなダイアログに安易にサブフォルダを含めたファイルリストを出すと
>>ファイルがどのフォルダにあるのか非常にわかりにくく、同じ名前のファイルが
>>いくつも並んだりする危険があることには注意してください。
>
>grep機能の "ファイル名一覧だけ作成"では "ClassABC"のstringが使われているフ
>ァイルは
>すべてリストアップされます(1行ー数十行)。
>
>今回要求のgrepに "ファイルを検索" のオプション設定を追加するとしているのは
>空白、タブで区切られたstringを取り出し、その中にperiodが含まれている場合、
>そのstringを、periodがない場合は後に".*"を追加したstringをファイル名とし、
>指定directoryおよびそのsubdirectoryをサーチし、
>対応ファイルを開くといったことを考えています。
>したがって通常1個のファイルのみがリストアップ されると思います。

#03023をもう一度読み直してください…
「探したいファイルの名前」を「検索するファイル」の項に入力するんです。
grep本来の機能はファイル内の文字列のサーチですが、こうすればファイル名の
サーチとして使うこともできるんです。

>これらのファイル参照機能が ダイレクトタグジャンプと同様に
>1アクションで行え、元に戻れたらと考えたわけです。

1アクションで実行するマクロを書いてみました。
でも、勝手にタグジャンプまで実行してしまうのはいいやり方とは思えません。

--------
$searchroot = "c:\\project\\";//サーチする基準ディレクトリ

//検索ファイル名取得
if(selecting==0) selectword;//範囲選択してなければ単語取得
$searchfile = gettext(seltopx,seltopy,selendx,selendy);
if(!result) endmacro;
if(strstr($searchfile,".")==-1) $searchfile=$searchfile+".*";
//検索実行
grep ".*",$searchfile,$searchroot,regular,subdir,filelist;
//ファイル名リストを出すだけならここまで

//タグジャンプ自動実行(複数候補があると困るのでおすすめできない)
#handle=hidemaruhandle(0);
tagjump;
//タグジャンプに成功したら検索結果をウィンドウを閉じる
if(result) closehidemaru #handle;
--------

[ ]
RE:03114 [要望事項]ファイルサーチ機能追No.03117
inouen さん 03/09/27 22:33
 
inouenです。

アルビレオさんの指摘を十分に理解しないまま、コメントを書いてしまって
申し訳ありませんでした。

>--------
>$searchroot = "c:\\project\\";//サーチする基準ディレクトリ
>
>//検索ファイル名取得
>if(selecting==0) selectword;//範囲選択してなければ単語取得
>$searchfile = gettext(seltopx,seltopy,selendx,selendy);
>if(!result) endmacro;
>if(strstr($searchfile,".")==-1) $searchfile=$searchfile+".*";
>//検索実行
>grep ".*",$searchfile,$searchroot,regular,subdir,filelist;
>//ファイル名リストを出すだけならここまで
>
>//タグジャンプ自動実行(複数候補があると困るのでおすすめできない)
>#handle=hidemaruhandle(0);
>tagjump;
>//タグジャンプに成功したら検索結果をウィンドウを閉じる
>if(result) closehidemaru #handle;
>--------

教えていただいた上記マクロを少し変更して次のマクロを作成しました。

// $searchroot = gettagsenv();  // ==>tagsdir[], ntagsdir
$tagsdirs[0]=$directory;   // cur.dir.(or 1st tags file's dir.)
$tagsdirs[1]="c:\\temp\\r14\\";  // 2nd tags file's dir.
$tagsdirs[2]="c:\\j2sdk142\\src\\"; // 3d  "    "
#ntagsdir = 3;      // no of tags file's dir. to search

//検索ファイル名取得
if(selecting==0) selectword;    //範囲選択してなければ単語取得
$searchfile = gettext(seltopx,seltopy,selendx,selendy);
if(!result) endmacro;
if(strstr($searchfile,".")==-1) $searchfile=$searchfile+".*";

//検索実行
#idir = 0;
while(#idir<#ntagsdir) {
 $searchdir = $tagsdirs[#idir];
 #idir=#idir+1;
 grep ".*",$searchfile,$searchdir,regular,subdir,filelist,fullpath;
 if (result>0) break;
}

if(result!=1)  endmacro;

//タグジャンプ自動実行
#handle=hidemaruhandle(0);
tagjump;
//タグジャンプに成功したら検索結果ウィンドウを閉じる
if(result) closehidemaru #handle;


getenv()マクロ 相当の gettagsenv()マクロ(?)がサポートされれば
ダイレクトタグジャンプ相当の ダイレクトファイルジャンプが
1個の共通のマクロファイルで実現できそうです。

秀丸エディタマクロヘルプDDEの項の機能を使用した エクスプローラ
との連携による方法は、まだ理解するにいたっていません。

色々と有難うございました。


[ ]