◀ANSI版開発トップへ
  • 3390 GREPから除外する機能(試作)
    • 3392 GREPから除外する機能
      • 3393 RE: GREPから除外する機能
      • 3411 RE: GREPから除外する機能
        • 3416 Re2: GREPから除外する機能
        • 3418 RE2: GREPから除外する機能
          • 3419 RE3: GREPから除外する機能
    • 3481 RE: GREPから除外する機能(試作)
      • 3502 RE2: GREPから除外する機能(試作)
        • 3505 Re3: GREPから除外する機能
          • 3506 Re4: GREPから除外する機能
  • [3390] GREPから除外する機能(試作) みく 2004年01月31日 16:19


    GREPから指定拡張子を除外する機能を試作ってみました。

    http://www.egroups.co.jp/files/sakura-editor/Developer/Source/notgrep20040131.LZH

    GREP条件入力画面のファイルのところに、

    *.* !\.(obj|exe)$

    のように入力するとそれにヒットするファイルが除外されます。
    (例:すべてのファイルが対象だが、.obj, .exe ファイルは除外する)

    以下、機能・制限の概要:
    ・頭の"!"が除外の意味。
    ・2文字目からが正規表現。
    ・除外パターンは一個しか指定できない。
    (複数書いたら最初の一個のみ使う。2個目以降はなかったものとして動作する。)
    ・検索対象としてファイルの最初が"!"になるものを指定できなくなる。(除外と認識してしまうため)
    ・除外の正規表現にトークンの区切りである" ;,"を書いてはいけない。

    画面での除外ファイル指定方法などの意見&案を希望。
    • [3392] GREPから除外する機能 みく 2004年02月01日 10:27

      >タイトル: RE: GREPから除外する機能(試作)
      >発言者: みく
      >GREPから指定拡張子を除外する機能を試作ってみました。

      http://www.egroups.co.jp/files/sakura-editor/Developer/Source/notgrep20040201.LZH

      GREP条件入力画面のファイルのところに、

      *.* !*.obj !*.exe

      のように入力するとそれにヒットするファイルが除外されます。
      (例:すべてのファイルが対象だが、.obj, .exe 拡張子ファイルは除外する)

      以下、機能・制限の概要:
      ・頭の"!"が除外の意味。
      ・2文字目からが除外ファイルのパターン(正規表現ではない)。
      ・検索対象ファイルの最初が"!"になるものを指定する場合は"!*.txt"のように""で囲んで書く。
      ・正規表現は使わない。
      ・何個でも書ける。
      ・優先順位はありません。(対象から除外を引く?)


      メモ:
      _tstoi()が残ってます。
      VC++6.0でビルドすると、何やら警告がたくさん出るようになったのですが、オプション変えました?
      cprofile.h(53)
      map(46)
      xtree(120) : warning C4786
      vector(58)
      vector(59)
      xmemory(59) : warning C4786
      • [3393] RE: GREPから除外する機能 げんた 2004年02月01日 12:13

        >VC++6.0でビルドすると、何やら警告がたくさん出るようになったのですが、オプション変えました?
        いや特に.

        >cprofile.h(53)
        コード上変なことはなさそう.

        >xtree(120) : warning C4786
        >xmemory(59) : warning C4786
        warning C4786は識別子の長さ制限を超えただけなので実質的には問題なしかと.
      • [3411] RE: GREPから除外する機能 みく 2004年02月14日 09:51


        →http://www.egroups.co.jp/files/sakura-editor/Developer/Source/notgrep20040214.LZH

        (ssrc_2004-02-08に対するパッチ)

        ・GREPから除外する機能
        !*.obj とするとGREPから除外する。
        etc_uty.cppのmy_strtokを簡略化
        ・GREPの重複を回避する機能
        *.* *.cpp などとすると a.cpp を2回GREPしてしまっていた。
        ・続タブのバグ修正
        ・VCでのビルドエラー回避
        _tstoi -> _ttoi
        ・デバッグモードでの警告抑止
        CProfile.hで#pragma warning( disable : 4786 )

        GREP機能は線形探索が一番速かったのでそうしてます。

        #デバッグよろしくです。

        関連記事: >>dev:3002
        • [3416] Re2: GREPから除外する機能 もか 2004年02月15日 00:52

          >#pragma warning( disable : 4786 )
          #ifdef _MSC_VER とかしたほうがよさげ

          # さっそく試食してみよう
        • [3418] RE2: GREPから除外する機能 げんた 2004年02月15日 12:50

          > etc_uty.cppのmy_strtokを簡略化
          先頭にある連続したtokenを取り除く部分が削除されていますが大丈夫?
          • [3419] RE3: GREPから除外する機能 みく 2004年02月15日 18:45


            >先頭にある連続したtokenを取り除く部分が削除されていますが大丈夫?

            空のトークンは無視するんですね。

            TCHAR* my_strtok( TCHAR* pBuffer, int nLen, int* pnOffset, const TCHAR* pDelimiter )
            {
            int i = *pnOffset;
            TCHAR* p;

            do {
            bool bFlag = false; //ダブルコーテーションの中か?
            if( i >= nLen ) return NULL;
            p = &pBuffer[i];
            for( ; i < nLen; i++ )
            {
            if( pBuffer[i] == _T('"') ) bFlag = ! bFlag;
            if( ! bFlag )
            {
            if( _tcschr( pDelimiter, pBuffer[i] ) )
            {
            pBuffer[i++] = _T('\0');
            break;
            }
            }
            }
            *pnOffset = i;
            } while( ! *p ); //空のトークンなら次を探す
            return p;
            }

            でどうだろう?
    • [3481] RE: GREPから除外する機能(試作) みく 2004年03月20日 07:03


      ssrc_2004-03-17に対する差分に変更

      http://www.egroups.co.jp/files/sakura-editor/Developer/Source/notgrep20040319.LZH
      • [3502] RE2: GREPから除外する機能(試作) みく 2004年03月27日 05:42

        >タイトル: RE2: GREPから除外する機能(試作)
        >発言者: みく
        >ssrc_2004-03-17に対する差分に変更
        >
        >http://www.egroups.co.jp/files/sakura-editor/Developer/Source/notgrep20040319.LZH

        +記事3419の適用が必要
        • [3505] Re3: GREPから除外する機能 もか 2004年03月27日 22:57

          ソース見てテストしてみました。
          DoGrepTree内
          6565行目:戻り値の型(int)なのに return falseになっている
          bGrepSubFolder を処理していない
          それ以外、除外する機能そのものは、ばっちりみたいです。
          Win2K/Celeron533ではファイル検索モードで「* * * * * * * * !*.*」とかやってみたけど体感速度も全然低下しません。
          「*.htm !*.html」(拡張子が、「html」のファイルを検索)もOKです。
          • [3506] Re4: GREPから除外する機能 げんた 2004年03月28日 02:30

            > bGrepSubFolder を処理していない
            これはbGrepSubFolderがFALSEならサブフォルダ検索をスキップすればOKですよね.
            もかさんの指摘点だけなおして取り込んでみます.

            よく見るとDoGrepFileにもbGrepSubFolder指定があるのが謎だ.(当然使ってない)