◀ANSI版開発トップへ
  • 2702 バグ修正
    • 2703 Re:バグ修正
      • 2704 Re2:バグ修正
    • 2706 RE: バグ修正
      • 2707 Re2: バグ修正
        • 2708 Re3: バグ修正
          • 2715 Re4: バグ修正 - まとめ
            • 2716 置換関係
              • 2720 Re:置換関係
                • 2721 Re2:置換関係
                  • 2722 Re3:置換関係 - 不具合追加
                    • 2724 Re4:置換関係 - 不具合追加
                      • 2729 プリンタ関係試しました
                        • 2731 Re:プリンタ関係試しました
                          • 2761 Re2:プリンタ関係試しました
                      • 2732 置換関係 - 確認
                        • 2733 置換関係 - 不具合
                          • 2738 Re:置換関係 - 再修正
                            • 2743 Re2:置換関係 - 再修正
                              • 2744 Re3:置換関係 - 再修正
                              • 2749 Re3:置換関係 - 訂正
                              • 2751 Re3:置換関係 - 再修正
                              • 2754 Re3:置換関係 - 再修正
                                • 2756 ありがち
                                  • 2758 Re:ありがち
                                    • 2762 Re2:ありがち
                                    • 2763 Re2:ありがち
                                      • 2764 Re3:ありがち
                                        • 2765 Re4:ありがち
                                          • 2770 Re5:ありがち
                                  • 2760 Re:ありがち
                            • 2759 Re2:置換関係 - 再チャレンジ
                              • 2767 Re3:置換関係 - 再チャレンジ
                                • 2768 Re4:置換関係 - 再チャレンジ
            • 2717 印刷関係 - 誰かよろしく
            • 2718 他
              • 2719 Re:他
        • 2714 Re3: バグ修正
  • [2702] バグ修正 かろと 2003年05月01日 09:42


    1.3.9.0にに対する差分です。
    http://www.egroups.co.jp/files/sakura-editor/Developer/Source/sakura_1_3_9_0_bugfix1_diff.lzh

    変更内容
    ・無限に置換が行われる不具合修正(開発2696)
    ・フリーカーソルでない時に行削除すると、EOLよりカーソルが右になる不具合対策
    ・長音が半角カタカナに変換されない不具合を直前文字が全角カタカナなら変換するように変更
     ついでに「濁点」「半濁点」も変換するように変更
    ・F_TAGJUMPで、longをboolに変換している警告が出る(VC++)対策(CEditView_Command.cpp)


    なお、1.3.9.0に上記変更を施した実行形式を下記に置いてますので、試用下さい。

    http://www.egroups.co.jp/files/sakura-editor/Junk/sakura_test_20030430.lzh
    • [2703] Re:バグ修正 かろと 2003年05月01日 09:46

      実行形式のURL間違えました・・・m(__)m

      http://ftp.tripod.co.jp/Archive/sakura_test_20030430.lzh
      • [2704] Re2:バグ修正 かろと 2003年05月01日 09:49

        また・・・(ゴミだらけにしちゃいました)

        http://members.tripod.co.jp/karoto/Archive/sakura_test_20030430.lzh
    • [2706] RE: バグ修正 すい 2003年05月02日 11:51

      >http://members.tripod.co.jp/karoto/Archive/sakura_test_20030430.lzh
      試してみました。

      >・無限に置換が行われる不具合修正(開発2696)
      この辺は OK っぽいですね。私が試した限りでは他の置換作業も正常のようです。

      >・フリーカーソルでない時に行削除すると、EOLよりカーソルが右になる不具合対策

      NG

      ----------
      1:→   123456789|
      2:→   12345
      ----------
      ・タブ幅:8 (タイプ別設定 → スクリーン中の設定ね)
      ・行頭の「→   」:タブ
      ・1行目末尾の |   :カーソル

      のようなテキストがあったとして行削除。

      するとカーソルが↓
      ----------
      1:→  | 12345
      ----------
      なぜに こんな所(タブ文字の途中)にカーソルが?

      削除行の次の行にタブ文字がある(行頭に限らず)と、カーソル位置が異常になるっぽいわさ。
      ↓みたいな所で行削除とか。
      ----------
      1:123456789|
      2:12→34567
      ----------
      ・→ :タブ
      ・1行目末尾の | :カーソル
      • [2707] Re2: バグ修正 かろと 2003年05月02日 19:31

        ▼ すいさん
        > 試してみました。
        > NG
        > 削除行の次の行にタブ文字がある(行頭に限らず)と、カーソル位置が異常になるっぽいわさ。

        ありがちで、お恥ずかしい・・・
        1行内の、桁(column)と位置(index)を混同してました。
        今度こそです。

        ついでに、
        ・印刷プレビューから「プリンタ」ボタンを押下して「キャンセル」を押下するとプリンタが不明になる
        ・プリンタの用紙設定がエディタ側に反映されない
        ・プリンタ固有の設定変更が記憶されないため2in1等の設定が行えない
        の不具合も修正したつもりです。

        試用して、バグ出しにご協力お願いします。

        また、プリンタ(CPrint, CPrintPreview)回りの動作が変わってます。
        ・「印刷」時に、通常の印刷ダイアログを出すように変更
        ・プリンタ設定ダイアログをモーダルに変更
        ・プリンタダイアログで選んだプリンタは、プロセス終了まで記憶してます
        ご意見お願いします。

        http://members.tripod.co.jp/karoto/Archive/sakura_test_20030502.lzh

        • [2708] Re3: バグ修正 かろと 2003年05月04日 10:43

          またまたお試し版です。

          <実行形式>
          http://members.tripod.co.jp/karoto/Archive/sakura_test_20030504.lzh
          <1.3.9.0からのソース差分>
          http://www.egroups.co.jp/files/sakura-editor/Developer/Source/sakura_1_3_9_0_bugfix2_diff.lzh

          前のお試し版からの変更は
          ・正規表現の行頭文字(^)を検索すると見つからないと言われる不具合修正
          ・正規表現の行頭文字(^)を検索すると全部の文字が検索文字の色になる不具合修正
          ・[EOF]位置から行末文字($)を検索すると、最下位行の行末にマッチしない不具合修正
          です。

          この辺の処理かなりややこしいですね・・・
          あちらを立てればこちらが立たずで、かなり苦労しました。

          正規表現関連で、あと気に入らないのが、行末の;を検索する場合に
          「;$」でなく、「;\r$」としないといけないことです。

          検索時(BMatchに渡す直前)に、$の前に\rを補ってやろうかとも考えたのですが、
          美しくないので、やめときました。
          誰か、
          CMemory内の改行を、\nで統一してくれたりしないですかね・・・

          • [2715] Re4: バグ修正 - まとめ すい 2003年05月07日 01:36

            >またまたお試し版です。
            >http://members.tripod.co.jp/karoto/Archive/sakura_test_20030504.lzh

            修正・変更内容をまとめると、こんな感じでしょうか。

            ★バグ(っぽい物)修正
            ◎置換
            ・改行コードを「すべて置換」した時、無限に置換が行われる不具合修正(開発2696)
            ・正規表現の行頭文字(^)を検索すると見つからないと言われる不具合修正
            ・正規表現の行頭文字(^)を検索すると全部の文字が検索文字の色になる不具合修正
            ・[EOF]位置から行末文字($)を検索すると、最下位行の行末にマッチしない不具合修正

            ◎印刷
            ・印刷プレビューから「プリンタ」ボタンを押下して「キャンセル」を押下するとプリンタが不明になる
            ・プリンタの用紙設定がエディタ側に反映されない
            ・プリンタ固有の設定変更が記憶されないため2in1等の設定が行えない

            ◎他
            ・フリーカーソルでない時に行削除すると、EOLよりカーソルが右になる不具合対策
            ・長音が半角カタカナに変換されない不具合を直前文字が全角カタカナなら変換するように変更
             ついでに「濁点」「半濁点」も変換するように変更(「全角カタカナ→半角カタカナ」変換)
            ・F_TAGJUMPで、longをboolに変換している警告が出る(VC++)対策(CEditView_Command.cpp)

            ★動作(仕様)変更
            ・「印刷」時に、通常の印刷ダイアログを出すように変更
            ・プリンタ設定ダイアログをモーダルに変更
            ・プリンタダイアログで選んだプリンタは、プロセス終了まで記憶してます

            以上//
            • [2716] 置換関係 すい 2003年05月07日 01:51

              >・改行コードを「すべて置換」した時、無限に置換が行われる不具合修正(開発2696)
              改行の置換関係は ひきつづき OK っぽいですね。

              >・正規表現の行頭文字(^)を検索すると見つからないと言われる不具合修正
              >・正規表現の行頭文字(^)を検索すると全部の文字が検索文字の色になる不具合修正
              この辺、とても良さげです。
              「 ^ を hogehoge に置換」で行頭に hogehoge を挿入とかも出来てますね。

              >・[EOF]位置から行末文字($)を検索すると、最下位行の行末にマッチしない不具合修正
              これのせいかな?

              対象のテキストファイルが CRLF(\r\n = 0d0a)改行、CR(\r=0d)改行、LF(\n=0a)改行
              混在のテキストに対して
               置換前:\r?$
               置換後:abc$&
              で行末を検索/置換すると、、、

              以降、○:正常。期待通り/×:おかしい/*:さらに おかしい

              ・期待される動作
               置換すると全行末に abc が付加される。

              ・従来の正式版(sakura_2003-04-24.zip)
               ×[置換(R)] で1個ずつ置換していくと \n 改行の行のみに対して置換処理実行されない。
                その後の行に対しては置換されていく。
               ×[すべて置換(A)] すると \n 改行の行で置換処理がストップし、以降の行に対しては
                処理されない。
               ○[F3] で↓方向に検索だけしていく場合の動作は正常。
               ○[Shift]+[F3] で↑方向に検索だけしていく場合の動作は正常。

              ・前回(sakura_test_20030502.lzh)
               *[置換(R)] で1個ずつ置換していくと \n 改行に対して置換処理されないだけでなく、
                そこで検索がストップしてしまい、何度 [置換(R)] 押しても先の行へ行かない。
               *[すべて置換(A)] すると \n 改行の行の位置で無限置換する。(をを!)
               ×[F3] で検索していくと \n 改行の位置でストップ。[F3] で以降の行へ進まない。
               ○[Shift]+[F3] で↑方向に検索だけしていく場合の動作は正常。

              ・sakura_test_20030504.lzh
               *[置換(R)] で1個ずつ置換していくと \n 改行に対して置換処理されないだけでなく、
                そこで検索がストップしてしまい、何度 [置換(R)] 押しても先の行へ行かない。
               ×[すべて置換(A)] すると \n 改行の行で置換処理がストップし、以降の行に対しては
                処理されない。
               ×[F3] で検索していくと \n 改行の位置でストップ。[F3] で以降の行へ進まない。
               ×[Shift]+[F3] で↑方向に検索だけしていくと CRLF(\r\n = 0d0a) 改行の所で2回ずつ止まる。

              元々おかしかった物が輪をかけて おもしろくなっている感。

              >行末の;を検索する場合に「;$」でなく、「;\r$」としないといけない
              「;\r?$」かと。

              >検索時(BMatchに渡す直前)に、$の前に\rを補ってやろうかとも考えたのですが、
              >美しくないので、やめときました。
              もし仮にそれやったら、美しさ云々以前に置換が異常になるのが目に見えている気が。。。 (;^^;)
              置換したら \r が消えちゃって \n のみの改行になっちゃうとか。
              • [2720] Re:置換関係 かろと 2003年05月08日 00:25

                ▼ すいさん
                > 対象のテキストファイルが CRLF(\r\n = 0d0a)改行、CR(\r=0d)改行、LF(\n=0a)改行
                > 混在のテキストに対して
                >  置換前:\r?$
                >  置換後:abc$&
                > で行末を検索/置換すると、、、
                >
                > 以降、○:正常。期待通り/×:おかしい/*:さらに おかしい

                ははは・・・やはり手強い・・・
                なんだか、変なところ盛りだくさんですね・・・
                平日は、じっくりデバッグする時間もないので、週末までお待ちください。
                • [2721] Re2:置換関係 げんた 2003年05月08日 00:50

                  >平日は、じっくりデバッグする時間もないので、週末までお待ちください。
                  その後すいさんが動作確認して、正式取り込みは来週中頃というのはかなり楽観的予測かな?
                  • [2722] Re3:置換関係 - 不具合追加 すい 2003年05月09日 02:49

                    >>> ×[F3] で検索していくと \n 改行の位置でストップ。[F3] で以降の行へ進まない。
                    これって検索語「\r?$」とかだけでなく、「.*」とかでも似たような現象がでるみたいですね。

                    「.*」を [F3] で↓方向に行くと、\n 改行の行から先(↓方向)へ進みません。
                    また、「.*」を [Shift]+[F3] で↑方向に行くと、\r 改行以外の行(\r\n改行および\n改行の行)
                    にて1行につき2回止まります。

                    “\r を含み得る正規表現の一部”処理が異常?
                    - - - - - - - - - -
                    さらにおかしい現象が。

                    なんか使いづらいなと思っていたら、置換そのものの動作がおかしいです。
                    正規表現に関係なく。

                    1箇所ずつ [置換(R)] していく時、

                    ・従来の正式版(sakura_2003-04-24.zip) , 前回(sakura_test_20030502.lzh)
                     1.[置換(R)] を押すと、先頭の方の検索語と一致する文字列が置換される。
                      置換後、カーソルは次の置換対象文字まで飛ぶ。

                     2.カーソル位置の置換処理対象文字を見て、置換する/しない を判断する。
                      置換するなら [置換(R)] を押して置換する。置換するとカーソルは次の置換対象文字まで飛ぶ。
                      置換しないなら [下検索(D)] で置換せずに次の置換対象文字まで飛ぶ。

                     3.カーソル位置の置換処理対象文字を見て、<以下 2. の繰り返し>

                    ・sakura_test_20030504.lzh
                     1.[置換(R)] を押すと、次の検索語の位置まで飛び、置換処理される。
                      そこでカーソルが止まったまま。
                      次の置換処理対象文字列の位置へ行かない。

                     2.[置換(R)] を押すと、次の検索語の位置まで飛び、置換処理される。
                      そこでカーソルが止まったまま。
                      次の置換処理対象文字列の位置へ行かない。

                     3.[置換(R)] を押すと、<以下 2. の繰り返し>


                    置換処理の時( [置換(R)] を押す時)にカーソルが置換対象文字の
                    位置にいないため、次の置換対象文字は置換したい所なのか置換したく
                    ない所なのかが [置換(R)] ボタンを押す前に確認できません。

                    [置換(R)] ボタンを押してみてから、カーソルが飛んで行って置換された
                    結果を見て、それから、そこが置換したかった所なのかどうかを判定するしかない...
                    特に置換対象文字が遠くはなれた↓方向の行にある場合なんかは致命的かと。

                    また、現カーソル位置が見えないので、次の置換対象文字が近くに
                    ある場合でも、次の置換対象文字の判別ができなくなる事がある。
                    (カーソルがある行はアンダーラインで分かりますけど、置換対象文字が
                     1行に何個もあるような場合、次はどれ?状態に)
                    - - - - - - - - - -
                    >>平日は、じっくりデバッグする時間もないので、週末までお待ちください。
                    特に複雑な所だと思いますし、焦らずにやって頂ければ、と。

                    >その後すいさんが動作確認して、正式取り込みは来週中頃というのはかなり楽観的予測かな?
                    う゛っ :-P

                    ### その頃だと、まだ、私が動作確認できてない時期かも。(汗)
                    • [2724] Re4:置換関係 - 不具合追加 かろと 2003年05月11日 21:06


                      えーと、お待たせしました。(あんまし時間が取れなかった・・・)
                      すいさんの指摘と、げんたさんの プレビューが更新されない不具合を
                      修正しました。

                      http://members.tripod.co.jp/karoto/Archive/sakura_test_20030511.lzh

                      既知の問題
                      ・プリンタ固有の設定がクリアされるのは、多分そのままです
                      ・\n改行を \r?$ --> abc$& は置換されない(1.3.9.0もなんですが、なんでだろ~)

                      ▼ すいさん
                      > >>> ×[F3] で検索していくと \n 改行の位置でストップ。[F3] で以降の行へ進まない。
                      > これって検索語「\r?$」とかだけでなく、「.*」とかでも似たような現象がでるみたいですね。
                      >
                      > 「.*」を [F3] で↓方向に行くと、\n 改行の行から先(↓方向)へ進みません。
                      > また、「.*」を [Shift]+[F3] で↑方向に行くと、\r 改行以外の行(\r\n改行および\n改行の行)
                      > にて1行につき2回止まります。
                      >
                      > “\r を含み得る正規表現の一部”処理が異常?

                      特に \rを意識してないのですが、行頭検索ができるようにすると、
                      それができないことを犠牲にして成立していた部分が ぼろぼろになっちゃうみたいで・・
                      手強いです。(笑)
                      考えたあげく、
                      「行頭以外では、長さ0でマッチしない」という条件を追加しましたが、
                      いろんなパターンやると、まだボロが出そうですので、よろしく。

                      > - - - - - - - - - -
                      > さらにおかしい現象が。
                      >
                      > なんか使いづらいなと思っていたら、置換そのものの動作がおかしいです。
                      > 正規表現に関係なく。

                      うーむ。とりあえず元に戻しました。
                      「^」を「XXX」に置換が、1行飛ばしになってしまう問題を、この2回検索させないことで
                      対応しようとしたのですが、そういう動作仕様だったんですね。(笑)
                      従って、上記置換が、現状1行飛ばしで置換されます。
                      別の対策を検討中です・・・

                      > - - - - - - - - - -
                      > >>平日は、じっくりデバッグする時間もないので、週末までお待ちください。
                      > 特に複雑な所だと思いますし、焦らずにやって頂ければ、と。

                      ほんとに・・じっくりおつきあいください。

                      • [2729] プリンタ関係試しました げんた 2003年05月12日 21:55

                        用紙サイズ変更ができることは確認しました。
                        印刷設定の“一部”が保存されないようです。
                        用紙サイズ、用紙方向、両面・片面、印刷部数は保存されますが、割付数(2in1など)や出力先トレイが保存されません。

                        ところで、印刷ダイアログで出力先を選択できるようになったのですから「プリンタ」ボタンは不要だと思いません?
                        • [2731] Re:プリンタ関係試しました かろと 2003年05月12日 23:20

                          ▼ げんたさん
                          > ところで、印刷ダイアログで出力先を選択できるようになったのですから「プリンタ」ボタンは不要だと思いません?

                          実は思ってました。(笑)
                          なくちゃっていいですか?
                          • [2761] Re2:プリンタ関係試しました かろと 2003年05月17日 03:13

                            ▼ かろとさん
                            > ▼ げんたさん
                            > > ところで、印刷ダイアログで出力先を選択できるようになったのですから「プリンタ」ボタンは不要だと思いません?
                            >
                            > 実は思ってました。(笑)
                            > なくちゃっていいですか?

                            と、行ったのですが、不要な部分を根こそぎ分解する自信がないので、
                            他力本願で、なくしちゃって欲しいな・・・
                      • [2732] 置換関係 - 確認 すい 2003年05月13日 00:44

                        >えーと、お待たせしました。(あんまし時間が取れなかった・・・)
                        >すいさんの指摘と、げんたさんの プレビューが更新されない不具合を
                        >修正しました。
                        >
                        >http://members.tripod.co.jp/karoto/Archive/sakura_test_20030511.lzh

                        お待ちしておりました。ご苦労様です。
                        サイズオーバーになったので2個に分けます。

                        ・正規表現に関係なく置換そのものの動作がおかしい件( [置換(R)] 押した時の動作)も
                         直っている事を確認。

                        ・「[\r\n]+」⇒「」 改行削除
                         置換、すべて置換 共 OK。無限置換も無し。

                        ・「\r?$」⇒「abc$&」 $ を使った行末置換
                         とりあえず従来の正式版(sakura_2003-04-24.zip) とほぼ同じ状態↓にまで戻りましたね。
                        > ×[置換(R)] で1個ずつ置換していくと \n 改行の行のみに対して置換処理実行されない。
                        >  その後の行に対しては置換されていく。
                        > ×[すべて置換(A)] すると \n 改行の行で置換処理がストップし、以降の行に対しては
                        >  処理されない。
                        > ○[F3] で↓方向に検索だけしていく場合の動作は正常。
                        > ○[Shift]+[F3] で↑方向に検索だけしていく場合の動作は正常。

                        ・「[\r\n]+」⇒「abc$&」 $ を使わない行末置換
                         置換、すべて置換 共 OK(今までどおり)

                        ・「.*」を [F3] で↓方向に検索して行く
                         正常。

                        ・「^」⇒「abc」 行頭に abc を挿入
                         [すべて置換(A)] は正常。
                         [置換(R)] 時
                        > うーむ。とりあえず元に戻しました。
                        > 「^」を「XXX」に置換が、1行飛ばしになってしまう問題<略>
                        > 従って、上記置換が、現状1行飛ばしで置換されます。
                         の状態である事を確認出来ました。 (;^^;)
                         これも直すのは大変そうですね。 (;^^A
                        • [2733] 置換関係 - 不具合 すい 2003年05月13日 00:49


                          > ・[EOF]位置から行末文字($)を検索すると、最下位行の行末にマッチしない不具合修正
                           直っているような無いような。
                           以下の現象は sakura_test_20030504.lzh までは無かった現象のようです。

                           例えば最終行が 100行で(いえ、何行でも良いんですけど)、100行目の行末にも改行があるファイルにて、

                           1. 98行目辺りから正規表現「$」検索で [F3] を何度も押して最終行100行目まで検索して行く。
                           2. 最終行100行目の行末末尾へ到着したら [↓] キーで [EOF] の位置へ行く。
                           3. [Shift]+[F3] で↑方向へ検索すると、100行目の行末を飛ばして99行目の行末へ行く。

                           他の操作手順で [EOF] まで行ってから [Shift]+[F3] した場合には正常動作なんですけど。はて?
                           [EOF] まで行く操作手順に左右されるというのは...

                           また、「$」で検索される位置がなんか変になることがあります。

                          ↓テストファイルを用意して
                          -----
                          abcd
                          efgh
                          ijkL
                          -----

                          検索語が正規表現で「$」の状態で、| がカーソル位置として
                          ┌──┐
                          │  ↓
                          │ -------
                          │ 1:abcd
                          │ 2:efgh
                          │ 3:ijkL|
                          │ -------
                          │ ↑にて [↑][↑][←] とキー操作すると、カーソル位置は↓
                          │ -------
                          │ 1:abc|d
                          │ 2:efgh
                          │ 3:ijkL
                          │ -------
                          │ ↑この位置から [F3] すると、↓
                          │ -------
                          │ 1:abcd
                          │ 2:efgh |
                          │ 3:ijkL
                          │ -------
                          │ ↑ありゃ?何故に次の行(2行目)の行末に?
                          │ さらにもう一度 [↑][←] と操作して、↓
                          │ -------
                          │ 1:abc|d
                          │ 2:efgh
                          │ 3:ijkL
                          │ -------
                          │ ↑この位置から [F3] すると、↓
                          │ -------
                          │ 1:abcd
                          │ 2:efgh
                          │ 3:ijkL |
                          │ -------
                          │ 今度は3行目の行末に?? (oo;ゞ
                          │ ここから再度、<以下、先頭に戻って繰り返し>
                          └───────────┘

                          あちらを立てればこちらが立たず、次から次へと、、、っぽいですね。
                          • [2738] Re:置換関係 - 再修正 かろと 2003年05月13日 22:36

                            ▼ すいさん
                            >  1. 98行目辺りから正規表現「$」検索で [F3] を何度も押して最終行100行目まで検索して行く。
                            >  2. 最終行100行目の行末末尾へ到着したら [↓] キーで [EOF] の位置へ行く。
                            >  3. [Shift]+[F3] で↑方向へ検索すると、100行目の行末を飛ばして99行目の行末へ行く。

                            >  また、「$」で検索される位置がなんか変になることがあります。

                            あ、するどい・・前半は確信犯だったりします(笑)
                            後で修正するつもりだったのですが、先に気づかれちゃいましたね。。修正してみました。

                            後半は、気づいてなかったです。前半+αの問題がありました。

                            あと、「^」→「XXX」の置換を1行飛ばしでなくやるようにしました。
                            (あんまり綺麗なパッチでないのですが・・・今のところこれしか・・です)

                            http://members.tripod.co.jp/karoto/Archive/sakura_test_20030513.lzh

                            • [2743] Re2:置換関係 - 再修正 すい 2003年05月14日 12:29

                              また、投稿サイズオーバーなので2個に分けます。

                              \r\n(0d 0a)改行、\r(0d)改行、\n(0a)改行 混在テキストにて

                              (1)「[\r\n]+」⇒「」 改行削除
                               すべて正常。無限置換も無し。

                              (2)「[\r\n]+」⇒「abc$&」 $ を使わない行末置換
                               置換、すべて置換 共 OK(今までどおり)

                              (3)「\r?$」⇒「abc$&」 $ を使った行末置換
                               *[置換(R)] で1個ずつ置換していくと \n 改行に対して置換処理されないだけでなく、
                                そこで検索がストップしてしまい、何度 [置換(R)] 押しても先の行へ行かない。
                               *[すべて置換(A)] すると \n 改行の行の位置で無限置換する。(をを!)
                               ○[F3] で↓方向に検索だけしていく場合の動作は正常。
                               ○[Shift]+[F3] で↑方向に検索だけしていく場合の動作は正常。
                               まあ、元々のリリース版でも動作異常でしたし、、、

                              (4)「.*」⇒「abc」 全行の内容を abc に置換(\r も通常の文字と見なされるため、改行コードは \n になる。\r(0d)改行の行は連結される)
                               ×[置換(R)] で1個ずつ置換していくと \n 改行の行から先へ進まない。
                                \n 改行の行 で [置換(R)] 押すたびに文字列 abc が書き足されていく。
                               ×[すべて置換(A)] すると \n 改行の行の位置で無限置換する。放っておくと \n 改行の行のサイズが∞に。。。
                               ○[F3] で↓方向に検索だけしていく場合の動作は正常。
                               ○[Shift]+[F3] で↑方向に検索だけしていく場合の動作は正常。

                              (5)「[^\r\n]*」⇒「abc」 全行の内容を abc に置換
                               ×[置換(R)] で1個ずつ置換しようとすると、まったく先の行へ進まない。
                                [置換(R)] 押すたびに文字列 abc が書き足されていく。
                               ×[すべて置換(A)] すると無限置換する。放っておくと1行目のサイズが∞に。。。
                               ○[F3] で↓方向に検索だけしていく場合の動作は正常。
                               ○[Shift]+[F3] で↑方向に検索だけしていく場合の動作は正常。

                               ↑(4) は、正式リリース版では全て正常でした。
                               (5) は正式リリース版だと「空行にマッチしない」という不具合がありました。
                               でもこんな類の置換する人はいないも。 「[^\r\n]*([\r\n]+)」⇒「abc$1」とかで やれば きちんと出来るし。
                               それにそもそも正規表現の * の意味を考えれば、今のこの動作こそが正常とも言えるかもしれないし、、、(;^^;)
                               # 改行文字直前の 0文字にマッチしているのでしょうから。
                               でも(4)で \n 改行の行とそれ以外とで動作が異なるというのは何か解せん気も。
                              • [2744] Re3:置換関係 - 再修正 すい 2003年05月14日 12:29

                                (6)「$」を検索
                                 ○[F3] で↓方向に検索だけしていく場合の動作は正常。
                                 ×[Shift]+[F3] で↑方向に検索だけしていく場合、\r(0d)改行の行末に止まらない。

                                 でも、実は↑これは従来の正式版でも同じ異常動作するし。 :-)
                                 「$」⇒「hogehoge」 の置換が出来ないのも従来通り。

                                (7) [EOF]位置から行末文字($)を検索すると、最下位行の行末にマッチしない不具合修正
                                 直っているようですね。

                                (8)「^」⇒「abc」 行頭に abc を挿入
                                 △[置換(R)] で1個ずつ置換していく場合、処理自体は正常。
                                  ただし、カーソルも何も表示たれないため、次、どこが置換対象になっているのかが分からないので
                                  「この行頭は [置換(R)] する、次の行頭とその次の行頭は [下検索(D)] で飛ばしてその次の行頭を [置換(R)]...」
                                  といった作業は実質不可能に近い。
                                 ○[すべて置換(A)] する場合は正常
                                 ○[F3] で↓方向に検索だけしていく場合の動作は正常。
                                 ○[Shift]+[F3] で↑方向に検索だけしていく場合の動作は正常。

                                従来の正式版では異常だった箇所が、大分、まともに動作するようになった感じですねぇ。

                                まとめると、
                                1.従来の正式版で正常にできていた事は、ほぼ正常にできるようだ。(2) 他、色々
                                2.従来の正式版で異常だった動作が色々正常に動作するようになった。(1)(7)(8)
                                3.従来の正式版で異常だった動作が、そのまま異常のまま。(6)
                                4.従来の正式版で異常だった動作が輪をかけて おもしろおかしく なった。(3)
                                5.正規表現の解釈の違い?で動作がかわった。(4)(5)

                                1. と 2. が大きいですね。
                                3. は今回はしょうがないという事にして、4. は今回は放っておいても...という気も。
                              • [2749] Re3:置換関係 - 訂正 すい 2003年05月14日 22:16

                                > ↑(4) は、正式リリース版では全て正常でした。
                                よくよく調べ直して見たら、正常ではありませんでした。 < 正式リリース版
                                という事で (4)(5) 訂正。

                                (4)「.*」⇒「abc」
                                  全行の内容を abc に置換(\r も通常の文字と見なされるため、
                                  改行コードは \n になる。\r(0d)改行の行は連結される)

                                ・正式リリース版(sakura_2003-04-24.zip)
                                 ×[置換(R)] 押していくと「\n(0a)改行の空行」は無視(スキップ)される。
                                 ×[すべて置換(A)] すると「\n(0a)改行の空行」は処理されない。
                                 ○[F3] で↓方向に検索だけしていく場合の動作は正常。
                                 ○[Shift]+[F3] で↑方向に検索だけしていく場合の動作は正常。

                                ・sakura_test_20030513.lzh
                                 ×[置換(R)] で1個ずつ置換していくと \n 改行の行から先へ進まない。
                                  \n 改行の行 で [置換(R)] 押すたびに文字列 abc が書き足されていく。
                                 ×[すべて置換(A)] すると \n 改行の行の位置で無限置換する。放っておくと \n 改行の行のサイズが∞に。。。
                                 ○[F3] で↓方向に検索だけしていく場合の動作は正常。
                                 ○[Shift]+[F3] で↑方向に検索だけしていく場合の動作は正常。

                                (5)「[^\r\n]*」⇒「abc」
                                  全行の内容を abc に置換

                                ・正式リリース版(sakura_2003-04-24.zip)
                                 ×[置換(R)] 押していくと、空行は無視(スキップ)される。
                                 ×[すべて置換(A)] すると、空行は処理されない。
                                 ×[F3] で↓方向に検索だけしていくと空行は飛ばされる。
                                 ×[Shift]+[F3] で↑方向に検索だけしていくと、1行に付き2回マッチする。

                                ・sakura_test_20030513.lzh
                                 ×[置換(R)] で1個ずつ置換しようとすると、まったく先の行へ進まない。
                                  [置換(R)] 押すたびに文字列 abc が書き足されていく。
                                 ×[すべて置換(A)] すると無限置換する。放っておくと1行目のサイズが∞に。。。
                                 ○[F3] で↓方向に検索だけしていく場合の動作は正常。
                                 ○[Shift]+[F3] で↑方向に検索だけしていく場合の動作は正常。
                              • [2751] Re3:置換関係 - 再修正 かろと 2003年05月15日 22:21

                                ▼ すいさん
                                > また、投稿サイズオーバーなので2個に分けます。
                                > (3)「\r?$」⇒「abc$&」 $ を使った行末置換
                                >  *[置換(R)] で1個ずつ置換していくと \n 改行に対して置換処理されないだけでなく、
                                >   そこで検索がストップしてしまい、何度 [置換(R)] 押しても先の行へ行かない。
                                >  *[すべて置換(A)] すると \n 改行の行の位置で無限置換する。(をを!)

                                無限置換するのは、防止したいですね・・・

                              • [2754] Re3:置換関係 - 再修正 蒔田 信幸 2003年05月16日 22:15

                                ▼ かろとさん
                                > (3)「\r?$」⇒「abc$&」 $ を使った行末置換
                                >  *[置換(R)] で1個ずつ置換していくと \n 改行に対して置換処理されないだけでなく、
                                >   そこで検索がストップしてしまい、何度 [置換(R)] 押しても先の行へ行かない。
                                >  *[すべて置換(A)] すると \n 改行の行の位置で無限置換する。(をを!)

                                これだけの結果を見ると、
                                20030513より、前の20030504の方が良かったと思います。

                                20030504
                                ○置換前 「\r?\n?$」「\r*\n*$」「[\r\n]*$」「[\r\n]+$」「\r?$」
                                ○置換前                   「[\r\n]+」
                                0置換前 「\r?\n?」 「\r*\n*」 「[\r\n]*」       「\r?」

                                20030513
                                ○置換前 「\r?\n?$」「\r*\n*$」「[\r\n]*$」「[\r\n]+$」
                                ○置換前                   「[\r\n]+」
                                △置換前                         「\r?$」
                                ×置換前 「\r?\n?」 「\r*\n*」 「[\r\n]*」       「\r?」

                                ○期待どうりの結果。
                                0結果何もしない。
                                △無限に実行。停止すると、期待どうりの結果。
                                8無限に実行。停止しても、結果何もしない。
                                ×無限に実行。停止すると、予想外の結果。
                                 置換後 「EOL$&」
                                 実行時 「すべて置換」

                                お邪魔しました。
                                • [2756] ありがち すい 2003年05月16日 23:57

                                  せっかく調査・報告して頂いたところで申し訳ないのですが、 m(_ _)m
                                  これは「非常によくありがちなミス」としてよく例に挙げられたりする
                                  典型的な正規表現の記述ミスです。

                                  「\r?\n?」
                                  「\r*\n*」
                                  「[\r\n]*」
                                  「\r?」

                                  これらは行末や改行にマッチするのではなく、
                                  「全ての場所にマッチしろ」という記述になります。

                                  ・? というのは直前の文字が 0 または 1 個の場合
                                  ・* というのは直前の文字が 0 個以上ある場合

                                  という意味ですので、例えば「\r?\n?」ならば

                                  「 \r が 0個(存在しない)または 1個あり、そのすぐ後ろに
                                    \n が 0個(存在しない)または 1個ある場所」

                                  という意味で、すなわちこれは「何も文字が無い場所にもマッチしろ」
                                  という意味に捉えるのが正しい正規表現の解釈となります。

                                  すなわち「ABCD」というテキストに対して「\r?\n?」を検索すると、
                                  Aの前、AとBの間、BとCの間、、、にマッチする、という事です。

                                  他の「\r*\n*」「[\r\n]*」「\r?」も全て同じですね。

                                  ? や * を使用する時は、「 0個にもマッチする」という意味を
                                  よ~く意識して気を付けていないと こういう記述をして思わぬ
                                  処理結果を招きます。

                                  ちなみに期待される処理動作は、
                                  -----
                                  abc
                                  def
                                  -----

                                  ↑というテキストを
                                  「\r?\n?」⇒「EOL$&」と置換すると↓

                                  -----
                                  EOLaEOLbEOLcEOL
                                  EOLdEOLeEOLfEOL
                                  -----
                                  と、なるかと。他の「\r*\n*」「[\r\n]*」「\r?」も全て同じです。

                                  ...残念ながら、こうなりませんが。20030504,20030513 共
                                  • [2758] Re:ありがち 蒔田 信幸 2003年05月17日 01:49

                                    ▼ すいさん
                                    > という意味で、すなわちこれは「何も文字が無い場所にもマッチしろ」
                                    > という意味に捉えるのが正しい正規表現の解釈となります。
                                    >
                                    > すなわち「ABCD」というテキストに対して「\r?\n?」を検索すると、
                                    > Aの前、AとBの間、BとCの間、、、にマッチする、という事です。

                                    前半は賛成出来ますが、後半はできかねます。
                                    たとえば、
                                    ------
                                    a
                                    b
                                    c
                                    ------
                                    とあったときに、正規表現の「D*a」は1回のマッチですが、「D*」であれば、0回のマッチが正しいのではないでしょうか。
                                    全ての文字にマッチするのは「.」(ドット)ですので。
                                    • [2762] Re2:ありがち かろと 2003年05月17日 03:27

                                      ▼ 蒔田 信幸さん
                                      > ▼ すいさん
                                      > 前半は賛成出来ますが、後半はできかねます。
                                      > たとえば、
                                      > ------
                                      > a
                                      > b
                                      > c
                                      > ------
                                      > とあったときに、正規表現の「D*a」は1回のマッチですが、「D*」であれば、0回のマッチが正しいのではないでしょうか。
                                      > 全ての文字にマッチするのは「.」(ドット)ですので。

                                      D*a は、1回(a に)マッチしますが、
                                      D* は、0回じゃなくて、少なくとも3回(a,b,cの頭)にマッチしたくなりません?


                                    • [2763] Re2:ありがち すい 2003年05月17日 05:07

                                      >前半は賛成出来ますが、後半はできかねます。

                                      賛成出来る/出来ないの問題ではありません。
                                      正規表現は こういう動作をするものです。

                                      >------
                                      >a
                                      >b
                                      >c
                                      >------
                                      >とあったときに、正規表現の「D*a」は1回のマッチですが、「D*」であれば、0回のマッチが正しいのではないでしょうか。
                                      >全ての文字にマッチするのは「.」(ドット)ですので。

                                      「文字にマッチする」のではなく、「文字と文字の間の、文字数0文字」に
                                      マッチするのです。それが一般的な正規表現の仕様です。
                                      現実に世の中にある正規表現がまともに動作するユーティリティで
                                      試してみれば、私が記述したとおりの動作結果になりますよ。
                                      • [2764] Re3:ありがち 蒔田 信幸 2003年05月17日 12:24

                                        ▼ すいさん
                                        すみません、残念です。
                                        サンプルを試した結果、どちらも予想と違っていました。
                                        -----
                                        aabb
                                        bbaa
                                        -----
                                        のテキストがあった時、「a*」にマッチするのは、複数回の指定をしていないので、行頭のみでした。
                                        1文字と*や?の組み合わせだけの場合は先頭に^が無言で付くようです。

                                        ちなみに、このサンプルでは
                                        置換前 「a*」
                                        置換後 「A」
                                        正規表現 チェック

                                        ------
                                        Abb
                                        Abbaa
                                        ------
                                        となりました、GNU Awk 3.0.3を使いました。
                                        私も、他のプログラムの正規表現でも同じだと思います。
                                        • [2765] Re4:ありがち すい 2003年05月17日 14:19

                                          >-----
                                          >aabb
                                          >bbaa
                                          >-----
                                          >のテキストがあった時、「a*」にマッチするのは、複数回の指定をしていないので、行頭のみでした。
                                          >1文字と*や?の組み合わせだけの場合は先頭に^が無言で付くようです。
                                          >
                                          >ちなみに、このサンプルでは
                                          >置換前 「a*」
                                          >置換後 「A」
                                          >正規表現 チェック
                                          >
                                          >------
                                          >Abb
                                          >Abbaa
                                          >------
                                          >となりました、GNU Awk 3.0.3を使いました。
                                          >私も、他のプログラムの正規表現でも同じだと思います。

                                          ^ が付くなんて事は ありえません。
                                          ------
                                          Abb
                                          Abbaa
                                          ------
                                          のような結果になるのは置換回数が1回になっているからでしょう。
                                          awk の sub 使ったりすると、sub 1回実行当たり1回の置換しか
                                          実行されませんから「初めの1回目にマッチする位置である行頭位置」
                                          の置換だけがおこなわれ、そのようになります。
                                          awk なら gsub 使わないとね。

                                          -- test.awk ---
                                          {
                                          gsub( /a*/ , "A" );
                                          print;
                                          }
                                          ---------------

                                          -- test.txt --
                                          aabb
                                          bbaa
                                          --------------

                                          で jgawk -f test.awk < test.txt すると

                                          --------------
                                          AAbAb
                                          AbAbA
                                          --------------
                                          ですね。
                                          検索語「a*」が「aa」の部分、「bb」の「b」と「b」の間、
                                          そして2行目の行頭「bb」の前の位置などにもマッチして
                                          いるのが分かりますよね?

                                          同様ように sed で

                                          -- test.sed ---
                                          s/a*/A/g
                                          ---------------

                                          sed -f test.sed < test.txt すると

                                          ---------------
                                          AAbAb
                                          AbAbA
                                          ---------------

                                          です。

                                          perl で
                                          -- test.pl ---
                                          while(<>) {
                                          s/a*/A/g;
                                          print;
                                          }
                                          --------------

                                          perl test.pl < test.txt すると

                                          ---------------
                                          AAbAbA
                                          AAbAbAA
                                          A
                                          ---------------

                                          です。

                                          行末の改行コードなどの取り扱いがユーティリティごとに異なるため、
                                          行末部分(改行コード部分)などに対して置換が 行われる/行われない
                                          といった違いが出ますけどね。
                                          • [2770] Re5:ありがち 蒔田 信幸 2003年05月17日 16:55

                                            ▼ すいさん
                                            モデルはawkで良かったのですね。
                                            gsubを忘れていました。ほっとしました。(暖)

                                            私のサンプルでもawkは{gsub(/a*/,"A"); print}で、
                                            ------
                                            AbAbA
                                            AbAbA
                                            ------
                                            となりました。

                                            ▼ かろとさん
                                            有難うございます、今読みました。
                                  • [2760] Re:ありがち かろと 2003年05月17日 03:01

                                    ▼ すいさん
                                    > -----
                                    > EOLaEOLbEOLcEOL
                                    > EOLdEOLeEOLfEOL
                                    > -----
                                    > と、なるかと。他の「\r*\n*」「[\r\n]*」「\r?」も全て同じです。
                                    >
                                    > ...残念ながら、こうなりませんが。20030504,20030513 共

                                    今のベースの検索・置換のアルゴリズムだと、こうなれないのですよね・・・
                                    この辺り見ていて思うのが、
                                    後方(↓)検索を、現在のキャレット位置から検索してマッチするアルゴリズムなのですが、
                                    これを、現在のキャレット位置の次から検索してマッチするようなアルゴリズムに変えると
                                    上のような動作も期待はできるのですけどね・・・やってみないとわからんけど・・
                                    #一段落ついたら、チャレンジしてみるかも・・

                                    正規表現のミソである 「長さ0」のマッチ時に、現状のアルゴリズムは
                                    キャレット位置を動かさないので、無限に長さ0にマッチし続けてしまうのが、
                                    よくでる、「置換を押しても先へ行かない」や「無限置換」の温床になってます。

                                    おかげで、勉強させてもらってます。(笑)

                            • [2759] Re2:置換関係 - 再チャレンジ かろと 2003年05月17日 02:46

                              <記事訂正>
                              ちょっと方針変更です。後ほど、また別のをアップロードします。


                              ---------- <元記事>
                              すいさん。毎度の確認ありがとうございます。
                              懲りずに、再チャレンジです。(おつきあい下さいね)

                              http://members.tripod.co.jp/karoto/Archive/sakura_test_20030516.lzh

                              既出の無限置換は対策したつもりです。(あくまで、つもり)
                              (でも、話題の\r?\n? は 無限にマッチし続けます(笑))
                              ・「^」→「abc」の置換で、カーソルが表示されないので、どこが置換対象かわからないというのですが、[F3][Shift+F3] の時のようにカーソルだけでも表示できればいいのですが、やりかた分からず断念。誰かヘルプ~。


                              $の置換は難しいですねぇ~。
                              bregexp.dllに置換させると、「$」→「hogehoge」の場合
                              普通にやると、\r\n改行は、\rhogehoge\n にならざるを得なくて
                              (現状、そうもなりませんが・・)(笑)
                              どうしたら いいものやらです。
                              #理想的には、bregexp.dllが \r\nも\nも\rも改行扱いして $とマッチしてくれりゃ楽なんですが・・・
                              #(もちろん、\r\n$と書かれれば、それに従う)
                              • [2767] Re3:置換関係 - 再チャレンジ げんた 2003年05月17日 16:02

                                置換の方はまだまだ手こずりそうだしプリンタの設定も不完全のようなので、先にみくさんの方だけ取り込んで正式版を出してしまっていいですか?
                                • [2768] Re4:置換関係 - 再チャレンジ かろと 2003年05月17日 16:12

                                  ▼ げんたさん
                                  > 置換の方はまだまだ手こずりそうだしプリンタの設定も不完全のようなので、先にみくさんの方だけ取り込んで正式版を出してしまっていいですか?

                                  はい。そうしてください。
            • [2717] 印刷関係 - 誰かよろしく すい 2003年05月07日 01:51

              >バグ修正
              >・印刷プレビューから「プリンタ」ボタンを押下して「キャンセル」を押下するとプリンタが不明になる
              >・プリンタの用紙設定がエディタ側に反映されない
              >・プリンタ固有の設定変更が記憶されないため2in1等の設定が行えない
              >
              >動作(仕様)変更
              >・「印刷」時に、通常の印刷ダイアログを出すように変更
              >・プリンタ設定ダイアログをモーダルに変更
              >・プリンタダイアログで選んだプリンタは、プロセス終了まで記憶してます

              私は印刷関係は ちょっと、と、あらかじめ言っておくための書き込みです。

              軽く見た感じでは良さげですが、詳しく(というか実質全然)見ていません。

              私は印刷、滅多に使わないですし、使う時でも凝った事やりませんから
              どこか関係無さそうな所に影響が出ていても気付けないでしょうし、
              そもそも家にはプリンタが無いし。

              という事で私は一切印刷関係のチェック出来ませんので他の皆様よろしく m(_ _)m  と言ってみる書き込み。
              # げんたさん から既に出ている点くらいなのかな?
            • [2718] 他 すい 2003年05月07日 01:51

              >・フリーカーソルでない時に行削除すると、EOLよりカーソルが右になる不具合対策
              私が試した範囲では動作正常になりました。
              ただ動作にちょっと違和感がありますが...

              | がカーソル位置として
              -----
              1:abcdefg|
              2:abcd
              3:abcdefghijk
              -----

              ↑の状態でカーソル移動 [↓] [↓] と操作すると↓

              -----
              1:abcdefg
              2:abcd
              3:abcdefg|hijk
              -----

              と、なりますよね。その動作に合わせて

              -----
              1:abcdefg|
              2:abcd
              3:abcdefghijk
              -----

              ↑から行削除を2回続けて実行すると↓

              -----
              1:abcdefg|hijk
              -----

              の位置にカーソルが来た方が、このエディタとしては自然な気がするのですが。
              # 無理?


              >・長音が半角カタカナに変換されない不具合を直前文字が全角カタカナなら変換するように変更
              > ついでに「濁点」「半濁点」も変換するように変更

              これ、そもそも不具合なのかなぁ?と、まず思ったのですが。単なる仕様変更じゃ。。。 (^^)

              動作は確認しましたが、、、
              前のカタカナ文字を含めて範囲選択されている場合の長音が半角になるのですね。
              前がカタカナでも長音だけが選択されている場合には半角にならない。

              私はこの動作仕様でも特に何も問題無いですが、動作仕様的に、なんか後々、
              他のユーザーがバグと勘違いして「なんか動作がおかしい」とか言われそうな気も。
              こういう仕様で良いでしょうか?という点で他のユーザーの方からも
              意見を聞いておきたい気分かも。
              • [2719] Re:他 かろと 2003年05月08日 00:21

                ▼ すいさん
                > ただ動作にちょっと違和感がありますが...
                > -----
                > 1:abcdefg|hijk
                > -----
                >
                > の位置にカーソルが来た方が、このエディタとしては自然な気がするのですが。
                > # 無理?

                気持ちは分かります(笑)
                簡単にできるのかな~。長考モードです。(笑)

                > これ、そもそも不具合なのかなぁ?と、まず思ったのですが。単なる仕様変更じゃ。。。 (^^)

                ははは・・・BugsInfo.txtに入っていたので不具合扱いしてました(--;

                > 私はこの動作仕様でも特に何も問題無いですが、動作仕様的に、なんか後々、
                > 他のユーザーがバグと勘違いして「なんか動作がおかしい」とか言われそうな気も。
                > こういう仕様で良いでしょうか?という点で他のユーザーの方からも
                > 意見を聞いておきたい気分かも。

                ですね。
        • [2714] Re3: バグ修正 げんた 2003年05月06日 22:46

          お疲れ様です。

          >・プリンタの用紙設定がエディタ側に反映されない
          >・プリンタ固有の設定変更が記憶されないため2in1等の設定が行えない
          >の不具合も修正したつもりです。
          プリンタの不具合修正いろいろ試してみました。おおむねうまく動くようですが、ちょっと気になったことがあります。

          用紙サイズの設定がプリンタ設定と印刷設定の両方にあるのですが、プリンタ設定で用紙サイズを変更すると変更が反映されないようで印刷プレビューも変化しません。

          印刷設定で用紙サイズを変更するとプリンタ固有の設定がデフォルトに戻るようです。