◀ANSI版開発トップへ
  • 4937 パッチ更新
    • 4942 Re:パッチ更新
      • 4943 Re2:パッチ更新
        • 4945 Re3:パッチ更新
          • 4947 Re4: 正規表現パッチ更新
          • 4950 Re4:パッチ更新
            • 4954 Re5:パッチ更新
              • 4956 Re6:パッチ更新
              • 4960 再現方法です。
      • 4944 Re2:正規表現パッチ
        • 4946 Re3:正規表現パッチ
          • 4948 Re4:正規表現パッチ
            • 4949 Re5:正規表現パッチ
        • 4953 Re3:正規表現パッチ
          • 4955 Re4:正規表現パッチ
            • 4959 Re5:正規表現パッチ
  • [4937] パッチ更新 げんた 2007年07月22日 16:18

    Patches#1550557 自動実行マクロ
    Patches#1742481 bregonig.dll対応
    更新しました.(疲れた~,暑いし)

    暇な方がいらっしゃいましたら,まとめバイナリを作っていただけるとありがたいです.
    • [4942] Re:パッチ更新 ryoji 2007年07月24日 23:17

      ▼ げんたさん
      > Patches#1742481 bregonig.dll対応
      ちょっと動かしてみました。
      選択変更したのに変更が反映されないケースがあって直観的に「おや?」と感じました。
      一方を選択して、それが無ければ他方が使用されるようになっているんですね...
      選択DLLが無いときは正規表現が機能しないようになるほうが単純に状況が把握しやすいかな?と感じましたが、それだと何か他に問題があるでしょうか。
      他方を使いたいときは別途入手が必要なのだとわからせたほうがいいかしら?、と。
      種類が増えたりしたら、優先順位はどうするのかな?とか。そんなの今は考えなくていいか。
      ごく直観的で些細な話、どっちが都合が良いのかもよくわからないので、今の動作のままでもいいような気もしますけど。(^^;;;

      蛇足:
      一部TCHAR化が入ってますが、TCHAR*とかconst TCHAR*って、自分はWin APIの記載にあわせてLPTSTRやLPCTSTRと記述することが多いです。
      皆さんはどうなんでしょう。
      あ、ヘルプサポート(sakura.hh)の修正はまだ入ってないんですね。
      • [4943] Re2:パッチ更新 maru 2007年07月25日 00:24

        >選択DLLが無いときは正規表現が機能しないようになるほうが単純に状況が把握しやすい
        ユーザー指定可能にするなら「無ければ機能しない」案に1票です。

        なまじ設定画面で指定できるだけに、仕様をよく理解していない場合、両方持っているつもりで使っていたら…みたなシナリオになったとき微妙な気がして。
        さらに親切するなら、DLLがないものは指定できない(非表示)+機能しないの2段構えとか。

        個人的には、ユーザー指定できない(ファイルの有無から自動決定する)ような最初の仕様でも問題ないです。
        「BREGEXP.DLLを優先する」などと、表示だけ修正っていう案もありますが。

        もし「無ければ機能しない」にする場合は、設定が空のときのデフォルト値はちょっと配慮が必要ですね。
        例えば、既存ユーザーでBREGEXP.DLLを使っていた人が意図的に設定をリセット(iniファイルを削除)したら、bregonig.dllがなくて怒られる、みたいなことにならないように。
        • [4945] Re3:パッチ更新 ryoji 2007年07月25日 00:43

          ▼ maruさん
          > 個人的には、ユーザー指定できない(ファイルの有無から自動決定する)ような最初の仕様でも問題ないです。
          > 「BREGEXP.DLLを優先する」などと、表示だけ修正っていう案もありますが。
          記法修正ということなら、
          [正規表現DLLの優先順位]
          ・bregonig.dll->BREGEXP.DLL
          ・BREGEXP.DLL->bregonig.dll
          の二択にするとか...
          • [4947] Re4: 正規表現パッチ更新 げんた 2007年07月25日 01:49

            とりあえずこちらの案で修正してみました.
            あと,const TCHAR*もLPCTSTRに直しました.
          • [4950] Re4:パッチ更新 じゅうじ 2007年07月25日 03:57

            ▼ ryojiさん
            > 記法修正ということなら、
            > [正規表現DLLの優先順位]
            > ・bregonig.dll->BREGEXP.DLL
            >・BREGEXP.DLL->bregonig.dll
            > の二択にするとか...

            改訂版でも、
            □ 正規表現 DLL名 バージョン
            で、無理ですか?

            BREGEXP.DLL があれば、DLL名にはBREGEXPが、
            BREGONIG.DLL があれば、DLL名にはBREGONIGが、
            ボタンとか、表示が増えない方向がいいのかと。

            DLLファイルが両方あれば、BREGONIGを優先でいいのかと。
            #理由は、新しく追加された機能を優先したほうが、
            #やはりいいのかなと。ラジオボタンで選ぶのは最初だけ
            #と仮定して、ファイルの有無で判定するだけの機能では
            #だめですか。
            • [4954] Re5:パッチ更新 げんた 2007年07月26日 00:32

              選択できる作りにすると,後からbregonig.dllを持ってきても設定を変えるまで有効にならないですよね.

              新しくDLLをコピーすること自体が意思表示と考えるとこんな感じでしょうか.

              1) 前回使った正規表現DLLの種別を記録するようにする.
              その上で

              2) bregonigが見つかった場合
              2-a) 前回もbregonig→そのまま使う
              2-b) 前回BREGEXPで両方見つかった→bregonigが新しく見つかったから使うかどうかを尋ねる
              2-b-イ) 「はい」ならbregonigを今後も使う
              2-b-ロ) 「いいえ」なら次回また問い合わせる
              2-b-ハ) 「無視」なら問い合わせない (これは不要か?)
              2-c) 前回BREGEXPでbregonigのみ見つかった→bregonigを使う旨を通知
              2-d) 前回のDLLの記録無し→bregonigを使う旨を通知

              3) BREGEXPが見つかった場合
              3-a) 前回BREGEXP→そのまま使う
              3-b) 前回bregonig→代わりにBREGEXPを使う旨を通知
              3-c) 前回のDLLの記録無し→BREGEXPを使う旨を通知

              いろいろ案は出てくるものの,まとまりそうにないですねぇ
              • [4956] Re6:パッチ更新 じゅうじ 2007年07月26日 23:11

                ▼ げんたさん
                > 記法修正ということなら、
                > [正規表現DLLの優先順位]
                > ・bregonig.dll->BREGEXP.DLL
                > ・BREGEXP.DLL->bregonig.dll
                > の二択にするとか...
                >
                > 1) 前回使った正規表現DLLの種別を記録するようにする.
                > その上で

                表示上は、bregexp.dllで、bregonig.dllが動いてました。
                bregonig.dllを削除して気づきました。
              • [4960] 再現方法です。 じゅうじ 2007年08月13日 07:36

                表示上は、bregexp.dllで、bregonig.dllが動いてました。
                bregonig.dllを削除して気づきました。


                サクラの全終了から始める 「優先する」BREGEXP.DLL 「優先する」bregonig.dll
                BREGEXP.DLLのみ 1 2
                bregonig.dllのみ 3 4
                両方のDLLが有る 5 6

                正規表現キーワード /\b([0-9A-F]{2})+(?=h)?/k

                テキスト TimeStamp: 2A425E19 Sat Jun 20 07:22:17 1992

                1.「優先する」はBREGEXP.DLLの設定で、BREGEXP.DLLのみが存在
                色分け される(BREGEXP.DLL) ok
                「検索」メニュー BREGEXP.DLLを表示 ok
                「優先する」でbregonig.dllにした場合 BREGEXP.DLLを表示 ok


                2.「優先する」はbregonig.dllの設定で、BREGEXP.DLLのみが存在
                色分け される(BREGEXP.DLL) ok
                「検索」メニュー BREGEXP.DLLを表示 ok
                「優先する」でBREGEXP.DLLにした場合 BREGEXP.DLLを表示 ok


                3.「優先する」はBREGEXP.DLLの設定で、bregonig.dllのみが存在
                色分け されない(bregonig.dll) ok
                「検索」メニュー BREGEXP.DLLを表示 ng
                「優先する」でbregonig.dllにした場合 bregonig.dllを表示 ok


                4.「優先する」はbregonig.dllの設定で、bregonig.dllのみが存在
                色分け されない(bregonig.dll) ok
                「検索」メニュー bregonig.dllを表示 ok
                「優先する」でBREGEXP.DLLにした場合 BREGEXP.DLLを表示 ng


                5.「優先する」はBREGEXP.DLLの設定で、両方のDLLが存在
                色分け されない(bregonig.dll) ng
                「検索」メニュー BREGEXP.DLLを表示 ok
                「優先する」でbregonig.dllにした場合 bregonig.dllを表示 ng


                6.「優先する」はbregonig.dllの設定で、両方のDLLが存在
                色分け されない(bregonig.dll) ok
                「検索」メニュー bregonig.dllを表示 ok
                「優先する」でBREGEXP.DLLにした場合 BREGEXP.DLLを表示 ng
      • [4944] Re2:正規表現パッチ げんた 2007年07月25日 00:25

        >選択DLLが無いときは正規表現が機能しないようになるほうが単純に状況が把握しやすいかな?と感じましたが、それだと何か他に問題があるでしょうか。
        BREGEXP.DLLについて色々と苦情が出ているため,今回から新規の場合はbregonig.dllをデフォルトにしています.

        これまでは設定がなかったのでBREGEXP.DLLを入れれば正規表現が使えました.
        もし,bregonigをデフォルトにしたままでもう一方の読み込みを行わないようにすると,Webや過去ログで見つかる「サクラエディタで正規表現を使う方法」が全て誤った記述となり,掲示板が「正規表現が使えません」という投稿で溢れます.

        そもそも鬼車自身Perl正規表現を考慮して作られているので両者の非互換は僅かで,それを使い分けたい人はかなりのマニアだと思います.正規表現そのものがなんだかわからないようなレベルの使用者にもそのマニアックな設定を行わせるというのはやり過ぎではないでしょうか.よくわからないから「サクラエディタ 正規表現」で検索して,最初に見つかったページの手順通りやればとりあえず使えるようにはなることが重要かと思います.

        #早速検索してみましたが,有用なページが上位に来ないのにがっかり...(T_T)

        >他方を使いたいときは別途入手が必要なのだとわからせたほうがいいかしら?、と。
        単に有効にならないだけで,この(新規追加された)設定に思い当たる人はいないのでは?
        特に昔から使っている人ほど混乱すると思います.入手先URLまで画面に表示してもわかってもらえるかどうか.


        >LPTSTRやLPCTSTRと記述することが多いです。
        えっと...綴りがわからなかったのでconst TCHAR* なんて書いちゃいました(..;)
        格好悪いので直します.(Windowsのヘッダを見ろと叱られそう...)
        • [4946] Re3:正規表現パッチ ryoji 2007年07月25日 01:46

          ▼ げんたさん
          > もし,bregonigをデフォルトにしたままでもう一方の読み込みを行わないようにすると,Webや過去ログで見つかる「サクラエディタで正規表現を使う方法」が全て誤った記述となり,掲示板が「正規表現が使えません」という投稿で溢れます.
          できればパッケージ版には同機能のものを複数は入れたくないですよね。
          bregonig.dllだけ入っているとして、今の形だとBREGEXP.DLLを選択しても検索画面にはbregonigだと表示されるわけです。
          そういうつまらないことで「何これ?」な質問が溢れたりはしないかな、とか感じてしまうんです。
          ...どっちもどっちなのかなぁ。

          あ、それと、関連の別件でもうひとつ。
          migemo設定も[支援]タブから[検索]タブに移動したほうが据わりが良さそうかな、と思いました。
          • [4948] Re4:正規表現パッチ げんた 2007年07月25日 01:57

            >BREGEXP.DLLを選択しても検索画面にはbregonigだと表示されるわけです。
            >そういうつまらないことで「何これ?」な質問が溢れたりはしないかな、とか感じてしまうんです。
            そういう見方もありますか...

            ただ,どちらを選んでも動作が変わらない問題は興味本位の質問で,正規表現が使えない問題は(ユーザにとって)切迫した問題だと思いませんか?

            もふぁんくらぶの方で「正規表現キーワードが使えない」という質問に皆さんが親切に答えてくださっているのを見ると特にそう思います.
            • [4949] Re5:正規表現パッチ ryoji 2007年07月25日 02:24

              ▼ げんたさん
              > >BREGEXP.DLLを選択しても検索画面にはbregonigだと表示されるわけです。
              > >そういうつまらないことで「何これ?」な質問が溢れたりはしないかな、とか感じてしまうんです。
              > そういう見方もありますか...
              これはあまり考えずに、ちょこちょこっとだけいじってみて「あれ?」だったので、同様の感触を持つ人はいるだろうな~、と。

              > もふぁんくらぶの方で「正規表現キーワードが使えない」という質問に皆さんが親切に答えてくださっているのを見ると特にそう思います.
              これも真摯に気にかけるなら、単体配布にもbregonig.dll同梱、とか。
              でも、ほとんどexeしか変わらないのに同梱は無駄かしら。(^^;
        • [4953] Re3:正規表現パッチ げんた 2007年07月26日 00:02

          具体的なシナリオを考えてみました.

          [単体配布]
          a-1) 現在のsakura.exeをアップデート→BREGXP.DLLをそのまま使う
          a-2) 新規にダウンロード→sakura downではBREGEXP.DLLにしか対応していない?
          sourceforgeにBREGEXPがあるので混乱を招く?
          a-3) 現在のsakuraを使っている人が新しいsakura.exeのみを(PC買い換え等を機に)新規にセットアップ

          [bregonnigを含むインストーラ]
          b-1) 新規→bregonigを含める
          b-2) 上書きインストール→BREGEXPとbregonigの両方が共存
          b-3) アンインストール(sakura.iniを残す)の後に同じ場所へインストール

          新規: bregonig, 上書き: BREGEXPの条件で不一致が起こるのは上のa-2, b-3, のシナリオです.a-3も微妙です.
          常にBREGEXP優先なら問題は発生しないが現状維持になってしまう.

          ---
          そもそも両者の差は非互換性であって機能的にはbregonigのみで全てまかなえると思います.正規表現マニアな人は両者を使い分ける必要もなくbregonigのみを使えば事足りる,とすると両方サポートの本質は新しいバージョンに精通していなくても従来の知識が役立たずになったりバージョンアップで突然何かが変わったりしないことを保証するためと考えます.

          正規表現を使わないことは検索オプションで選べる以上,使えそうなDLLを敢えて無視する意味があるとは思えないのですけど.
          • [4955] Re4:正規表現パッチ ryoji 2007年07月26日 01:05

            ▼ げんたさん
            > 正規表現を使わないことは検索オプションで選べる以上,使えそうなDLLを敢えて無視する意味があるとは思えないのですけど.
            一方が無ければ他方を使う、というのはげんたさんのご説明の通りで、そのほうがいいのだと思います。
            本当に些細なことだけど、当初のUIでは結果に不審を抱きそうなので、あまり相応しくないかしら、というだけで。
            なんだか説明に無理に労力を使わせてしまった気がして、申し訳ないです。m(__)m

            で、設定のUI部なんですが、その場での存在チェックとか、さほど凝る必要も無い気がします。

            優先する正規表現DLL名: [ テキストボックス(規定値は空) ]

            でもいいかなと思いました。
            DLLの検索順は、
            1.テキストボックスに記載された名称のDLL
            2.bregonig.dll
            3.BREGEXP.DLL
            たぶん、目的のDLLの存在を事前確認している人しか使わない。
            1が空かロードエラーなら2、3へ進む。
            migemo.dllのテキストボックスも空なら既定の検索パスでmigemo.dllを探すようになっていますし。
            • [4959] Re5:正規表現パッチ げんた 2007年08月12日 23:18

              ▼ ryojiさん
              > 優先する正規表現DLL名: [ テキストボックス(規定値は空) ]
              >
              > でもいいかなと思いました。
              で,実装してみました.フルパスの指定も可能ですが,どうせDLL名でしか設定しないだろうと考えて「参照」ボタンは付けていません.
              一応フォーカスが移ったときに選択されたDLLのバージョンを表示するようにしています.