|
ファイル名を指定してtagsファイルのサーチ範囲と同じdirectoryから
ファイルをサーチし、開くマクロを作成しました。
この機能はVer.4.04ではまだ公開されていない新しく追加していただいた
機能を使用しています。
キー割当てに設定しておけば ダイレクトタグジャンプと同様の使い勝手で
include file, import file, データ構造のみでtagsファイルにentryが
作成されないjava ファイル等を直接開くことができます。
//指定String名(.*)のファイルを現在のdirectory,
//tags-file directory, tags-file's subdirectoryをサーチし開く
//Ver4.10betaで動作確認: Ver4.04正式版ではサポート未の機能を使用
//現在のgrep情報セーブ
$svfile=grepfilebuffer; //検索するファイル
#svopt=searchoption; //検索条件フラグ
$svbuf=searchbuffer;
//検索ファイル名取得
if(selecting==0) selectword; //範囲選択してなければ単語取得
$searchfile = gettext(seltopx,seltopy,selendx,selendy);
if(!result) goto last;
if(strstr($searchfile,".")==-1) $searchfile=$searchfile+".*";
// message $searchfile;
$dir=directory; //現在のファイルのフォルダ
$dir0=$dir;
//検索実行
#i = 0;
while(1) {
grep ".*",$searchfile,$dir,casesense,subdir,filelist,regular,fullpath;
if (result>0) break;
nextdir:
$tagf=gettagsfile(#i); //秀丸tags宣言ファイル名取出し
call extractdir;
#i=#i+1;
if($dir=="") break;
if($dir==$dir0) goto nextdir;
}
#h=hidemaruhandle(0);
if(result==1) goto found1; //1個のみ検出
if(result==0) goto last; //ファイルなし
//2個以上検出、不要ファイルタイプのものを削除
//他に不要のものがあれば適宜追加のこと。
call filter "class(";
call filter "obj(";
call filter "exec(";
goscreenend;
// 2個以上の場合、ファイル検索結果表示のみ
if (lineno!=2) goto last;
up;
golinetop;
//1個のファイルのみ見つかったので タグジャンプ自動実行
found1:
tagjump;
//タグジャンプに成功したら検索結果ウィンドウを閉じる
if(result==yes)
closehidemaruforced #h;
last:
setsearch $svbuf,#svopt;
setgrepfile $svfile;
endmacro;
extractdir: //最後の"\tags"部分削除
##j=strlen($tagf); //(名前はtagsのみと考える)
if(##j<9) { // "c:\d\tags" : 最小9文字要
$dir=""; //ドライブ直接指定は不可
return;
}
$dir=leftstr($tagf,##j-5); // "\tags" 削除
return;
// obj, class, exec 等の不要ファイル行を削除する
filter:
goscreentop;
loop1:
searchdown $$1;
if (result!=0) {
golinetop;
deleteline;
goto loop1;
}
return;
// 複数ファイル検出された場合、開きたいファイルの行に
// カーソルを合わせ、次のマクロを実行すると良い。
// (grep 結果windowが後に残らない)
// #handle=hidemaruhandle(0);
// tagjump;
// if(result) closehidemaru #handle;
|
|