|
[559] Re:編集中のファイルパスを遡ってGrep |
| <400>相対パスにある同名のCもしくはHファイルを..
を参考に作成してみました(初マクロ)
// カーソル語をルート直下SubDirでGrep
// TAB=4
// 実行には PPA.DLL が必須です。sakura.exe と同じフォルダに ppa.dll を入れておいてください。
// マクロファイルの拡張子は .PPA でなくてはなりません。
var // 変数を確保する場所
NewPath:String;
FullPath:String;
PDir,Dir,Fname,Ext:String;
pt:Integer; // 整数数値変数
NL:String;
CurWord:String;
begin // ここより処理内容 //{
// ↓改行を用意
NL := '
';
FullPath := S_GetFilename(); // 編集中のファイル名を取得する
CurWord := S_ExpandParameter('$C'); //
// フルパスファイル名(FullPath)をディレクトリ(Dir)とファイル名(Fname)に分離する。
Fname := FullPath;
Dir := '';
repeat //{
pt := Pos( '\' , Fname );
if( pt > 0 ) then begin
Dir := Dir + Copy ( Fname , 1 , pt );
Fname := Delete( Fname , 1 , pt );
end;
until ( pt <= 0 ); //}
// ディレクトリ(Dir)を親ディレクトリ(PDir)とディレクトリ(Dir)に分離する。
if ( Length(Dir) > 3 ) then Dir := Delete(Dir,Length(Dir),1);
PDir := '';
repeat //{
pt := Pos( '\' , Dir );
if( pt > 0 ) then begin
PDir := PDir + Copy ( Dir , 1 , pt );
Dir := Delete( Dir , 1 , pt );
end;
until ( pt <= 0 ); //}
NewPath := PDir ;
// // ↓for デバッグ
// MessageBox(
// '[' + NewPath + ']' + NL +
// '[' + FullPath + ']' + NL +
// '[' + PDir + ']' + NL +
// '[' + Dir + ']' + NL +
// '[' + Fname + ']' + NL +
// '' , '確認' , 0 );
// NewPath が空で無ければ開く
if (NewPath <> '') then S_Grep(CurWord,'*.cpp;*.c;*.h',NewPath,1);
end;
//}
|
|
つんつく Mozilla/5.0 (Windows NT 6.1; rv:12.3) Gecko/20120717 Firefox/12.3 PaleMoon/12.3 |
|