◀ANSI版開発トップへ
  • 3942 先読み対応置換での不具合
    • 3948 Re: 先読み対応置換での不具合
      • 3949 Re2: 先読み対応置換での不具合
        • 3950 Re3: 先読み対応置換での不具合
          • 3951 Re4: 先読み対応置換での不具合
            • 3952 Re5: 先読み対応置換での不具合
            • 4090 Re5: 先読み対応置換での不具合
  • [3942] 先読み対応置換での不具合 かろと 2005年06月08日 00:25

    開発3937
    一般4487
    での不具合対応です。

    実行形式:(1.5.3.0:tarballが1.5.3.0だったので)
    http://karoto.hp.infoseek.co.jp/Archive/sakura_20050608.lzh

    差分(1.5.3.0):
    http://karoto.hp.infoseek.co.jp/Archive/sakura_R1531_sabun.lzh

    • [3948] Re: 先読み対応置換での不具合 げんた 2005年06月16日 23:32

      試してみました.
      通常の置換と結果を前に挿入するのはうまく動きましたが,置換結果をマッチの後ろに挿入するように指定した場合に,何故か行頭に挿入されてしまうようです.
      • [3949] Re2: 先読み対応置換での不具合 かろと 2005年06月18日 00:50

        >タイトル: Re2: 先読み対応置換での不具合
        >発言者: げんた
        >試してみました.
        >通常の置換と結果を前に挿入するのはうまく動きましたが,置換結果をマッチの後ろに挿入するように指定した場合に,何故か行頭に挿入されてしまうようです.

        後ろに挿入する場合、マッチ文字が行末だと次の行の行頭に挿入する「仕様」みたいですが、
        それのことかな?
        • [3950] Re3: 先読み対応置換での不具合 げんた 2005年06月18日 09:39

          >後ろに挿入する場合、マッチ文字が行末だと次の行の行頭に挿入する「仕様」みたいですが、
          ぬ~,そんな仕様だったのですか.
          ですが,どうもパターンによっては最後に1文字マッチしない文字がある場合でも次の行に送られてしまうパターンがあるようです.

          たとえば,
          abcdefg234
          abcdefg234
          abcdefg234
          に対して

          結果を後ろに挿入する設定でefg23→Aと正規表現置換するとAが次の行の行頭に入ります.正規表現でなければ正しく4の前に入るようです.
          • [3951] Re4: 先読み対応置換での不具合 かろと 2005年06月18日 14:59

            >タイトル: Re4: 先読み対応置換での不具合
            >発言者: げんた
            >>後ろに挿入する場合、マッチ文字が行末だと次の行の行頭に挿入する「仕様」みたいですが、
            >ぬ~,そんな仕様だったのですか.

            経緯は分からないのですが、
            コメントに書いてあるので仕様だと思われます。
            //検索後の文字が改行やったら次の行の先頭へ移動
            こんな風に・・・

            実は、微妙に気持ち悪いなとは思っていたのですが・・・このままでいいですか?

            >ですが,どうもパターンによっては最後に1文字マッチしない文字がある場合でも次の行に送られてしまうパターンがあるようです.
            ほんとうだ!1文字ずれてる。どうやら昔からあるバグみたいです(笑)
            先ほどのコメントのある、「改行やったら」の判定に等号が要らないようです。(下記2カ所)

            ---------------------------
            diff --dos -ur -x CVS -x tags -x sakura_rc.aps -x *.obj -x *.RES -x *.rc sakura_core_R1_5_3_1/CEditView_Command.cpp sakura_core/CEditView_Command.cpp
            --- sakura_core_R1_5_3_1/CEditView_Command.cpp Sat Apr 23 08:48:20 2005
            +++ sakura_core/CEditView_Command.cpp Sat Jun 18 14:55:14 2005
            @@ -7482,7 +7482,7 @@
            const CLayout* pcLayout;
            const char* pLine = m_pcEditDoc->m_cLayoutMgr.GetLineStr( m_nSelectLineTo, &nLineLen, &pcLayout );
            if( NULL != pLine &&
            - colTmp >= nLineLen - (pcLayout->m_cEol.GetLen()) ){
            + colTmp > nLineLen - (pcLayout->m_cEol.GetLen()) ){
            m_nSelectColmTo=0;
            m_nSelectLineTo++;
            }
            @@ -7934,7 +7899,7 @@
            {
            pLine = rLayoutMgr.GetLineStr( m_nSelectLineTo, &nLineLen, &pcLayout );
            if( NULL != pLine &&
            - colTmp >= nLineLen - (pcLayout->m_cEol.GetLen()) ){
            + colTmp > nLineLen - (pcLayout->m_cEol.GetLen()) ){
            bLineOffset=TRUE;
            }
            }
            ---------------------------
            • [3952] Re5: 先読み対応置換での不具合 げんた 2005年06月18日 16:15

              >実は、微妙に気持ち悪いなとは思っていたのですが・・・このままでいいですか?
              >ほんとうだ!1文字ずれてる。どうやら昔からあるバグみたいです(笑)
              パッチありがとうございました.
              昔からあるバグなのに誰も気付いていないってことは,誰もこの機能使ってないのかなぁ...(^^;)
            • [4090] Re5: 先読み対応置換での不具合 かろと 2005年11月06日 01:08

              > >タイトル: Re4: 先読み対応置換での不具合
              > >発言者: げんた
              > >>後ろに挿入する場合、マッチ文字が行末だと次の行の行頭に挿入する「仕様」みたいですが、
              > >ぬ~,そんな仕様だったのですか.
              >
              > 経緯は分からないのですが、
              > コメントに書いてあるので仕様だと思われます。
              > //検索後の文字が改行やったら次の行の先頭へ移動
              > こんな風に・・・
              >
              > 実は、微妙に気持ち悪いなとは思っていたのですが・・・このままでいいですか?

              リポジトリをさかのぼってみましたが、
              置換の処理をCDlgReplace.cppでやっていた頃にさかのぼって、
              Rev 1.7 ~ 1.8 になる時に、追加される時にすでに
              //検索後の文字が改行やったら次の行の先頭へ移動
              の処理がありますね・・・

              このままでいいですか?の問いにレスポンスもなかったのですが、
              げんたさんが仕様であることを知らなかったことも考慮に入れて、
              動作自体も直感的な動作じゃないし、この処理、やめてみようかと思います。