◀ANSI版開発トップへ
  • 5052 GREP結果からのタグジャンプでの不具合
    • 5053 Re:GREP結果からのタグジャンプでの不具合
      • 5054 Re2:GREP結果からのタグジャンプでの不具合
        • 5055 Re3:GREP結果からのタグジャンプでの不具合
    • 5056 Re:GREP結果からのタグジャンプでの不具合
      • 5057 Re2:GREP結果からのタグジャンプでの不具合
    • 5060 RE: GREP結果からのタグジャンプでの不具合
      • 5061 Re2: GREP結果からのタグジャンプでの不具合
        • 5062 Re3: GREP結果からのタグジャンプでの不具合
      • 5064 RE2: GREP結果からのタグジャンプでの不具合
        • 5065 RE3: GREP結果からのタグジャンプでの不具合
          • 5072 RE4: GREP結果からのタグジャンプでの不具合
      • 5067 Re2: GREP結果からのタグジャンプでの不具合
  • [5052] GREP結果からのタグジャンプでの不具合 ゼロ 2007年09月24日 00:03

    はじめまして。
    ユーザとして利用させて頂いております。

    GREP結果からのタグジャンプで不具合がありました。

    条件は以下の通りです。
    1.C:\Documents というファイルがある。
    2.デスクトップのファイルをGREP。
    3.GREP結果↓をダブルクリックする。
    ■"C:\Documents and Settings\ZERO\デスクトップ\test.txt" [SJIS]
    4.C:\Documentsが開く。

    宜しくお願いします。

    OS:XP HOME SP2
    Sakura:Ver. 1.5.15.3(V1310)
    • [5053] Re:GREP結果からのタグジャンプでの不具合 お助け1号 2007年09月24日 07:07

      サクラは無罪。
      関連付けの設定を間違ってるに一票
      • [5054] Re2:GREP結果からのタグジャンプでの不具合 ゼロ 2007年09月24日 09:52

        お助け1号さん

        ご回答ありがとうございます。

        > 関連付けの設定を間違ってるに一票
        具体的に関連付けのどの点に不備があるのかご教示いただけますと助かります。
        • [5055] Re3:GREP結果からのタグジャンプでの不具合 ゼロ 2007年09月24日 12:24

          関連付けということで"txt"の関連付けをチェックしました。

          open
          C:\WINDOWS\system32\NOTEPAD.EXE %1

          これを念のため以下のように変えてみましたが、事象は変わりませんでした。
          C:\WINDOWS\system32\NOTEPAD.EXE "%1"

          関連付けはこれとは別のことでしょうか?

          ※ちなみにSakuraは、どの拡張子にも関連付けていません。
    • [5056] Re:GREP結果からのタグジャンプでの不具合 じゅうじ 2007年09月24日 14:32

      > 1.C:\Documents というファイルがある。

      他には、フォルダ名に空白が入っていてば全部。
      C:\Documents and というファイルがある。
      C:\Program というファイルがある。
      C:\Documents and Settings\ZERO\My というファイルがある。

      「フォルダ」という種類のファイルに変更するしか今のところ無いですね。
      • [5057] Re2:GREP結果からのタグジャンプでの不具合 ゼロ 2007年09月24日 14:57

        ▼ じゅうじさん
        > 他には、フォルダ名に空白が入っていてば全部。
        > C:\Documents and というファイルがある。
        > C:\Program というファイルがある。
        > C:\Documents and Settings\ZERO\My というファイルがある。
        >
        > 「フォルダ」という種類のファイルに変更するしか今のところ無いですね。

        そのようです。ありがとうございます。
        実運用上問題はありません。そのファイル自体がオペミスで作られていた必要のないファイルでしたので一応報告させて頂きました。
    • [5060] RE: GREP結果からのタグジャンプでの不具合 げんた 2007年09月24日 20:50

      >■"C:\Documents and Settings\ZERO\デスクトップ\test.txt" [SJIS]
      >4.C:\Documentsが開く。
      たぶん,こういう仕様です.(今のところ)
      Grepではできるだけ様々な書き方(コンパイラの出力を取り込んだもの等)に対応するために,ファイル名「らしき」ところを見つけてジャンプを試みます.その際,ファイルが実在するかどうかを判定基準として使っているために,このようなことも起こります.
      ただ,現在は少しずつ調べて最初に見つかった物を優先しますが,最長一致にすることでより直感に近い動作にすることはできるのかなと思います.

      ▼じゅうじさん
      >「フォルダ」という種類のファイルに変更する
      これはどういう意味でしょう?
      • [5061] Re2: GREP結果からのタグジャンプでの不具合 じゅうじ 2007年09月24日 22:46

        ▼ げんたさん
        ファイル名の後ろに括弧が有る場合、最長一致でも、完全には無理です。
        aaa.txt(2,3)

        >「フォルダ」という種類のファイルに変更する
        フォルダーならば、エディタで開かれ無くなります。
        • [5062] Re3: GREP結果からのタグジャンプでの不具合 げんた 2007年09月24日 22:56

          >ファイル名の後ろに括弧が有る場合、最長一致でも、完全には無理です。
          >aaa.txt(2,3)
          確かに.

          >>「フォルダ」という種類のファイルに変更する
          >フォルダーならば、エディタで開かれ無くなります。
          いや,フォルダであってファイルでもあるものとは?(禅問答?)
          このようなことが可能であるならば変更手順を教えてください.
      • [5064] RE2: GREP結果からのタグジャンプでの不具合 すい 2007年09月24日 23:02

        ちょっと意外だった(そこまで手抜きなの?)ので追っかけてみましたが、
        たしかにそうなっていますね。

        ssrc_2007-07-08\sakura_core\etc_uty.cpp 1365行
        bool IsFilePath()

        文字列の前方からファイルパスと、後方に続くその他の文字列との区切りを探していますね。
        これでは こういう問題がでるのも当然かと。

        私が過去にコマンドライン文字列中から先頭部分の実在するファイルパスを
        抜き出す MY_SP.C なんかは、区切り位置を後方から判別しています。
        # つまり「最長一致」
        そうしなければ、こういう問題が出るのは明らかでしたから。

        ↑これ流用したりしたら、もう少しまともな物になりませんか?
        # 何か他の問題が出ます?
        • [5065] RE3: GREP結果からのタグジャンプでの不具合 げんた 2007年09月24日 23:44

          >ちょっと意外だった(そこまで手抜きなの?)ので追っかけてみましたが、
          >たしかにそうなっていますね。
          「上の文字がSJIS2バイトコードの2バイト目でないことを、1つ前の文字がSJIS2バイトコードの1バイト目でないことで判断する」なんてコメントからも怪しさが漂ってきます(T_T)

          >私が過去にコマンドライン文字列中から先頭部分の実在するファイルパスを
          >抜き出す MY_SP.C なんかは、区切り位置を後方から判別しています。
          >↑これ流用したりしたら、もう少しまともな物になりませんか?
          GetExistPath()を使って書き直すべきかも.

          ところで,MY_SP.Cに入っているmy_splitpath()って何故か限られた場所でしか使われていないのですね.
          • [5072] RE4: GREP結果からのタグジャンプでの不具合 すい 2007年09月27日 23:48

            ファイルパスの後方(→)の区切りを探す処理部分を書いてみました。
            大雑把ですが、こんな感じでどうでしょうか?と。

            http://groups.yahoo.co.jp/group/sakura-editor/files/Developer/Source/
            └→ SPLIT_FP.CAB タグジャンプ用ファイルパス分離

            # あくまで後方のみです。前方の処理は今まで通りの処理にお任せという事で、
            # 含んでいません。

            4個の汎用的に使える関数(sjis_strrchr/sjis_strchr/sjis_strrchrs/sjis_strchrs)を用意しました。
            そして、それ等を使用して、

            1. ファイルパスには絶対含まれ得ない、最も前方の文字を見つけ出し、そこで文字列をカット。

            2. '/' → '\' に全て置換(サクラエディタ内では要らない?かも)

            3. 最も最後方の「ファイルパス」と「他の文字列」との区切りになり得る文字を見つけ出し、
              順にカットしながらファイルの有無を確認していく。

            という処理を実行します。
            # 結構簡単な記述になっていると思います。

            テストで使用したのが LSI-C だったのでファイル有無の判定を access で
            やっちゃってますが、サクラエディタに組み込む場合には IsFileExists
            にでも変更してもらうとして。
      • [5067] Re2: GREP結果からのタグジャンプでの不具合 神楽 2007年09月25日 08:18

        ▼ げんたさん
        > >■"C:\Documents and Settings\ZERO\デスクトップ\test.txt" [SJIS]
        > >4.C:\Documentsが開く。
        > たぶん,こういう仕様です.(今のところ)
        > Grepではできるだけ様々な書き方(コンパイラの出力を取り込んだもの等)に対応するために,ファイル名「らしき」ところを見つけてジャンプを試みます.その際,ファイルが実在するかどうかを判定基準として使っているために,このようなことも起こります.
        > ただ,現在は少しずつ調べて最初に見つかった物を優先しますが,最長一致にすることでより直感に近い動作にすることはできるのかなと思います.
        文字列条件にあうファイルが複数存在した場合には、
        サブウインドウ等で複数候補の中から選択させるみたいなことはできないでしょうか?