^QG
/// ファイル名のディレクトリ部分を取り出す /** @param src 元のファイル名 @param dst ディレクトリ部分を受け取る変数 - 最後の \\ は消す。ただしルートディレクトリのときは \\ を残す。 - 注: txstrをreturnすることはできない (エラーは出ないが動作しない) **/ void subExtractFileDir(txstr src, txstr dst) { dst = src; char *p = pathGetFileName(dst); *p = (char)'\0'; pathFormDir(dst); if (dst[1]==(char)':' && dst[2]==(char)'\0') dst += "\\"; } /// 現在の文書のディレクトリをGREPします int rxGrepHere(TX *text) { txstr GREPHERE_WILDCARD = "*.cpp;*.c;*.cc;" "*.h;*.hpp;*.hxx;*.inl;*.inc" "*.mak;*.asm;*.txc;*.txt"; // 検索単語を得る。カーソル位置の単語が基本だが、カーソル位置が空白文字なら // HIST_SEARCH 検索文字列 ヒストリの最後の単語を検索する。 txstr word; txGetWord(text, word); if (isspace(word[0])) { HSTRBLK sbHist = sbFromHist(HIST_SEARCH); int nHist = sbGetCount(sbHist); word = sbRead(sbHist, nHist-1); } // この文書のディレクトリを得る txstr fn = text->szfilename; txstr curdir; subExtractFileDir( fn, curdir ); // GREPを起動する txstr path = curdir+"\\"+GREPHERE_WILDCARD; txstr option = "/fGrep -f\""+path+"\" -s\""+word+"\""; //printf(option); textFrameOpenEx("WZ GREP", option); return 0; } int main(TX *text) { return rxGrepHere(text); }
この記事は役に立ちましたか?