|
ファイルジャンプ マクロを作成してみましたので検討お願いします。
gettagsfile(#i) でも良いのですが(コメント部分参照)、サーチすべきディレクトリ
を直接指定する
gettagsdir(#i)を使う形で書いてみました。
//ファイル検索マクロ
//現在のgrep情報セーブ
$svstr=searchbuffer; //検索する文字列
$svfile=grepfilebuffer; //検索するファイル:要追加
$svfldr=grepfolder; //検索するフォルダ:要追加
#svopt=searchoption; //検索条件フラグ: 要拡張
//検索ファイル名取得
if(selecting==0) selectword; //範囲選択してなければ単語取得
$searchfile = gettext(seltopx,seltopy,selendx,selendy);
if(!result) goto last;
if(strstr($searchfile,".")==-1) $searchfile=$searchfile+".*";
$dir=directory; //現在のファイルのフォルダ
$dir0=$dir;
//検索実行
#i = 0;
while(1) {
grep ".*",$searchfile,$dir,subdir,filelist,fullpath,regular;
if (result>0) break;
nextdir:
$dirsv=$dir;
$dir=gettagsdir(#i); //要追加
// or
// $tagf=gettagsfile(#i); //要追加
// call extractdir;
#i=#i+1;
if($dir=="") break;
if($dir==$dir0) goto nextdir;
}
//ファイルなし、複数ファイル検出の場合、ファイル検索結果表示のみ
if(result!=1) goto last;
//1個のファイルのみ見つかったので タグジャンプ自動実行
#handle=hidemaruhandle(0);
tagjump;
//タグジャンプに成功したら検索結果ウィンドウを閉じる
if(result) closehidemaru #handle;
last:
setsearch $svstr,#svopt;
setgrepfile $svfile;
setgrepfolder $svfldr;
endmacro;
// extractdir: //最後の"\tags"部分削除
// ##j=strlen($tagf); //(名前はtagsのみと考える)
// if(##j<9) { //"c:\d\tags" 9文字
// $dir=""; //ドライブ直接指定は不可
// return;
// }
// $dir=leftstr($tagf,##j-4);
// return;
要追加、要拡張の部分は 秀丸側で変更していただく部分です。
よろしくお願いします。
|
|