◀ANSI版開発トップへ
  • 2495 パスの縮小表現のテスト実装
    • 2496 RE: パスの縮小表現のテスト実装
    • 2499 RE: パスの縮小表現のテスト実装
      • 2502 Re2: パスの縮小表現のテスト実装
        • 2504 mydoc2.zip
        • 2505 Re3: パスの縮小表現のテスト実装
          • 2508 Re4: mydoc2.zip
            • 2509 Re5: mydoc2.zip
              • 2512 Re6: mydoc4.zip
                • 2513 Re7: mydoc4.zip
                  • 2515 Re8: mydoc4.zip
                    • 2518 Re9: mydoc5.zip
                      • 2522 Re10: sted01.zip
                        • 2529 Re11: sted01.zip
                      • 2528 Re10: mydoc5.zip
                        • 2546 Re11: mydoc7.zip
                          • 2547 Re12: mydoc7.zip
                            • 2548 Re13: mydoc7.zip
                              • 2550 Re14: mydoc8.zip
                                • 2551 Re15: mydoc8.zip
                                  • 2553 Re16: mydoc8.zip
  • [2495] パスの縮小表現のテスト実装 もか 2002年11月27日 11:07

    昔(2002/02/12) 開発掲示板で
    ▼ [1562]やざきさん
    > マイドキュメントとか、デスクトップにあるファイルは、フルパスを書かないで
    > 「マイドキュメント\Bugsinfo.txt」
    > などと表示されると素敵じゃない?
    というアイディアを元に,テスト実装してみました。
    なお,開発中に付き仕様変更がありえます。
    まだダイアログで設定できません。

    ■バイナリ版
    http://www.egroups.co.jp/files/sakura-editor/Developer/Source/sakura_2002-11-26_mydoc1.zip
    ※sakura 1.3.5.6 の皮をかぶった特殊版です。
    readme.txt に仕様,設定方法などが書いてあります。

    差分/ソースファイルはすみません。まだ用意できていません。

    #WinXPでしかテストしてません。
    • [2496] RE: パスの縮小表現のテスト実装 やざき 2002年11月27日 23:22


      >> マイドキュメントとか、デスクトップにあるファイルは、フルパスを書かないで
      >> 「マイドキュメント\Bugsinfo.txt」
      >> などと表示されると素敵じゃない?
      >というアイディアを元に,テスト実装してみました。

      w2kで動かしてみました。すばらしい。あたくし的には絶賛。
    • [2499] RE: パスの縮小表現のテスト実装 すい 2002年11月28日 18:55

      >http://www.egroups.co.jp/files/sakura-editor/Developer/Source/sakura_2002-11-26_mydoc1.zip

      なんか基本機能が変だわさ。

      MS-DOS バッチファイルを開いてみる。するとなんかキーワードが強調表示されない。
      強調される物もあるけどされない物もあり。

      COPY とか Copy なんかは強調されるけど copy だと強調されない。
      REN は強調されるけど ren や Ren は強調されない。

      SAKURA.INI が異常になっている可能性を考え、
      ・エディタ全終了 → SAKURA.INI 削除 → エディタ起動 でデフォルト環境にしてみてもダメ。
      ・SAKURA.INI はそのままで SAKURA.EXE を 1.3.5.7 に入れ替えてみると正常に動作する。
      という事で INI ファイルのせいでもないようで。


      仕様としては非常にGoodな感じですわん。正式版に取り込まれる事に期待してます。
      ただ、デフォルトの [~] 表示の [ ] って目立たないですね。「最近使ったファイル」とかタイトルバーを見て思いました。
      <~> に変えてみたけど...う~ん、いまいち。適度に目立つ文字...難しい。


      %IECACHE% ですけど、IE 5 以上だと実際のキャッシュは Temporary Internet Files の
      さらに階層下の CONTENT.IE5 というフォルダの下になるので %IECACHE% だけだと
      CONTENT.IE5\~ になってしまうんですけど、この CONTENT.IE5 もいらない気がします。
      今は設定で
      From03=%IECACHE%\CONTENT.IE5
      To03=<IE>
      とかやってますけど、%IECACHE% の指示だけで CONTENT.IE5 も含むようにはできませんか?
      # あ、逆に それは やって欲しくないっていう人がいますかね?やるのはやめときます?


      とりあえず README.TXT 読んだうえでよろこんで常用してます。
      >常用には使わないことを強く推奨します。
      なんて書かれたら常用せずにいられませんし。(をぃ>私)
      • [2502] Re2: パスの縮小表現のテスト実装 もか 2002年12月02日 10:16

        まずは,やざきさんすいさん確認ありがとうございます。

        ▼ やざきさん
        > w2kで動かしてみました。すばらしい。あたくし的には絶賛。
        どうもありがとうございます。
        長らく放置されていた案なので,ひょっとしたら必要なのは
        自分くらいかと思ってました。

        ▼ すいさん
        > なんか基本機能が変だわさ。
        > COPY とか Copy なんかは強調されるけど copy だと強調されない。
        確認&手元では修正しました。
        バグ付きパッチアップするところでした。感謝します。

        > デフォルトの [~] 表示の [ ] って目立たない
        デフォルトをどうするか迷いますねぇ。うーん
        1.そのまま(%MYDOCS% -> マイドキュメント など)
        2.<~>
        3.[~]
        > %IECACHE%
        %IECACHE% に \CONTENT.IE5 を含めても特に問題はないと思います。
        CONTENT.IE5なしで指定したい場合は直接パスで記載すれば使えるので。

        しまった,外部仕様は一般掲示板に移動しないと...

        ■バイナリ・パッチ付き版
        http://www.egroups.co.jp/files/sakura-editor/Developer/Source/sakura_2002-12-02_mydoc2.zip
        ※sakura 1.3.5.7 を元に変更を加えた特殊版です。
        前回との違いは
        ・強調表示のバグを修正
        ・%IECACHE%に\CONTENT.IE5を含める特殊処理を追加
        ・ほかバグ修正
        ・デフォルト設定変更
        ・パッチのソース付き
        ダイアログで設定できないのは同じです。
        • [2504] mydoc2.zip すい 2002年12月02日 18:34

          >確認&手元では修正しました。

          どもです。修正されている事を確認しました。(*^o^*)

          ん?今度はもっと致命的だわさ。PPAのマクロが動作しないわさ。(ノ;_;)
          「文法エラーです[)]」って起こられるんだわさ。

          >デフォルトをどうするか迷いますねぇ。うーん
          今度は
          デスクトップ\~~
          ですか。う~ん、これが結構デフォルト設定としては無難なセンかもしれませんね。(^^)
          # 極端な好き嫌いなどの好みも出にくそうで。

          >%IECACHE% に \CONTENT.IE5 を含めても特に問題はないと思います。

          あれ?っという事が。

          1) %IECACHE% だけの設定で、環境によって「IEキャッシュ」の後ろに Content.IE5 が
            出たり出なかったり...

          2) IE3 の環境で手作業で
            HKEY_CURRENT_USER\Software\Microsoft\Win
          dows\CurrentVersion\Explorer\Shell Folders
            に Cache の値を設定してみたけど、「IEキャッシュ」表示にならないぞ!?

          という症状が (;^^;)

          調べて見たら
          1) の環境では Cache の値は "C:\WINDOWS\Temporary Internet Files\"(末尾に \ があり)
          でした。末尾に \ があると Content.IE5 が出てしまうようで。
          でも、この \ をレジストリエディタで削除しても IE 起動時に自動的に \ 付きに
          修正されてしまう。埒あかんっす。

          2) は逆に "C:\WINDOWS\Temporary Internet Files"(末尾に \ 無し)という値を設定したから
          らしい。"C:\WINDOWS\Temporary Internet Files\" と \ 付きにしたらちゃんと
          「IEキャッシュ」表示になりました。でも他の環境や値を見ても末尾に \ 無いのって普通では。。

          まとめると
          ・レジストリ値の末尾に \ があったり無かったりの違いで動作が違うみたい。
          ・世の中にはレジストリ値の末尾に \ がある環境と無い環境がある。
          ということのようで...うにゃ。


          使っているうちに欲が出てきました。
          今だと sakura.exe にプログラミングされている文字列しか使えませんよね?
          つまり %DESKTOP%,%MYDOCS%,%MYPICS%,%MYMUSIC%,%I
          ECACHE%,%SAKURA% だけ。
          たとえば「AppData」を登録したいという人や「お気に入り」や「Cookies」を
          登録したい、なんていう人が出たらどうしようもないですよね。
          # そんな設定する人は少ない気もしますけど。

          なので、プログラミング中に文字列を入れておくのをやめて
          「%~~% という文字列があったら HKEY_CURRENT_USER\...\Shell Folders から
           ~~ という値が無いか探して、その値を使う」
          というように出来ませんか?(もちろん %SAKURA% は別なわけですが。)
          %My Pictures% とか %Start Menu% みたいな感じに設定する。
          # ちょっと文字列処理が増えそうですけど。

          その方がより汎用...もっともマイドキュメントは %Personal% と指示するとか、
          設定が直感的ではなくなってしまう物もありますけど。

          んで、さらにレジストリ値だけでなく、レジストリに値がない場合は getenv で
          環境変数の値も取って見るようになると %TEMP% なんかが設定できて幸せ~~。
          %TEMP% 内のファイルいじり、よくやるもので。

          UNIX好きな人も %HOME% なんて設定できそ で 幸せかも。
        • [2505] Re3: パスの縮小表現のテスト実装 やざき 2002年12月02日 21:30


          >どうもありがとうございます。
          >長らく放置されていた案なので,ひょっとしたら必要なのは
          >自分くらいかと思ってました。

          いやいや、思いつきでデスクトップで作業したりすることがあるので、すごく便利だと思ってます。


          >> デフォルトの [~] 表示の [ ] って目立たない
          >デフォルトをどうするか迷いますねぇ。うーん
          >1.そのまま(%MYDOCS% -> マイドキュメント など)
          >2.<~>
          >3.[~]

          「そのまま」が意外によい感じだと思ったので、デフォルトが違うものになっても私は「そのまま」で使うと思いますっ。
          環境変数を見たりとかは、あまりうれしさを感じないので、賛成はしません。反対もしません(^-^;
          • [2508] Re4: mydoc2.zip もか 2002年12月05日 14:58

            >ん?今度はもっと致命的だわさ。PPAのマクロが動作しないわさ。(ノ;_;)
            >「文法エラーです[)]」って起こられるんだわさ。
            VC6.0Proの最適化オプションを「実行速度優先(sakuraでの初期設定)」でコンパイルすると発生するようです。
            原因が良くわかりませんでしたが,
            CPPA.cppだけコンパイルオプションを変更したところ回避できました。
            なお,バージョンをさかのぼってコンパイル&テストしたところ,
            1.3.2.0~1.3.1.5(ssrc_2002-06-24?)の付近の時点からエラーが発生します。
            #このバグの調査で時間を使ってしまい,本題のほうはおろそかです。

            >> %IECACHE% の \CONTENT.IE5
            >あれ?っという事が。
            末尾の\に対する処理を考慮したつもりがバグってました。
            手元ではちゃんと付加されるように修正しました。

            ■%~%の仕様について
            %~%自体は「ファイルパスを短く表示する」機能とはソースの通り別関数です。
            例えば,ルールファイル名の指定に使えば,「%SAKURA%\Rule\diff.rule」と指定できるようになります。
            このように将来を考えれば,汎用性は高いほうが良いことは確かです。
            もしこのように使うのであれば,環境変数を見るというのは重要かも。
            そういう意味では,Content.IE5を付加する処理はないほうが良いとかもと,いまさら思いました。

            #ほとんど,command.com/CMDですね。

            レジストリ名直指定をするなら,
            > 設定が直感的ではなくなってしまう物もありますけど。
            そういうものには,現在の実装のようにエイリアス名(%My Documents%=Personalとか)をつけておく。
            というのはどうでしょうか?
            • [2509] Re5: mydoc2.zip すい 2002年12月06日 12:59

              >>PPAのマクロが動作しない
              >VC6.0Proの最適化オプションを「実行速度優先(sakuraでの初期設定)」でコンパイルすると発生するようです。
              >原因が良くわかりませんでしたが,
              >CPPA.cppだけコンパイルオプションを変更したところ回避できました。
              >なお,バージョンをさかのぼってコンパイル&テストしたところ,
              >1.3.2.0~1.3.1.5(ssrc_2002-06-24?)の付近の時点からエラーが発生します。
              >#このバグの調査で時間を使ってしまい,本題のほうはおろそかです。

              「う~ん、この機能とは関係なさそうなところなのにぃ」と思っていたらそういうカラクリでしたか。
              調査、ご苦労様です。


              >■%~%の仕様について
              >%~%自体は「ファイルパスを短く表示する」機能とはソースの通り別関数です。
              >例えば,ルールファイル名の指定に使えば,「%SAKURA%\Rule\diff.rule」と指定できるようになります。

              ありゃ、ソースを見ていませんでしたが、そういう事もできるんですか。
              それはますますもってありがたいです。ソースも見てみます。
              コンピュータによってインストール先ドライブとかが異なる場合、
              設定をコピーするのが楽(ほとんどsakura.iniのコピーだけに近くなる)になりますね。

              >レジストリ名直指定をするなら,
              >> 設定が直感的ではなくなってしまう物もありますけど。
              >そういうものには,現在の実装のようにエイリアス名(%My Documents%=Personalとか)をつけておく。
              >というのはどうでしょうか?

              その手の事までやるとそれだけプログラムが複雑に...プログラムはシンプルな方が、、と思っての提案だったのですが。(^^;
              出来るのでしたらそこまでやった方が一般ユーザーには分かり易そうですね。
              • [2512] Re6: mydoc4.zip もか 2002年12月09日 19:56


                #すいません。時間がないので手短に書きます。

                レジストリ,環境変数を読むように仕様変更
                共通設定で設定できるようになりました。

                http://www.egroups.co.jp/files/sakura-editor/Developer/Source/sakura_2002-12-09_mydoc4.zip

                mydoc2と同時起動すると落ちるので注意してください。
                • [2513] Re7: mydoc4.zip すい 2002年12月09日 21:25

                  >レジストリ,環境変数を読むように仕様変更
                  >共通設定で設定できるようになりました。

                  # お、my_appicon.ico 対応版ですね。

                  すごいすごい!! very good ですわん。

                  デフォルト設定値もこんな感じなら万人向けでよろしいのではないかと。
                  私的には満足満足 大満足なかんじです。
                  # 今のところ特に不具合も無さげです。
                  • [2515] Re8: mydoc4.zip すい 2002年12月10日 12:25

                    ># 今のところ特に不具合も無さげです。
                    ごめんなさい。m(_ _)m
                    見落としがありました。

                    ソース中

                    > static const MetaAlias[] = {
                    >    ・・・
                    > { _T("COMDOC"), 7, _T("Common Documents") },
                    >    ・・・
                    > }

                    "COMDOC" は 6文字。7文字になってる。
                    %COMDOC% で指示すると「共有ドキュメント\\hogehoge\hoge」みたいに \\ になってしまふ。

                    そういえば前のバージョン(sakura_2002-12-02_mydoc2)も
                    MACRODIR (8文字)が 7文字になってましたね。こちらも動かなかったのでは。どのみちコメントアウトされてましたけど。
                    • [2518] Re9: mydoc5.zip もか 2002年12月11日 19:48

                      mydoc5 をegroupsにアップロードしました。

                      >> static const MetaAlias[] = {
                      >>    ・・・
                      >> { _T("COMDOC"), 7, _T("Common Documents") },
                      >>    ・・・
                      >> }
                      >"COMDOC" は 6文字。7文字になってる。
                      >%COMDOC% で指示すると「共有ドキュメント\\hogehoge\hoge」みたいに \\ になってしまふ。
                      報告ありがとうございます。訂正しました。

                      他に以下の修正があります。
                      ・『ファイル名表示』タブ[更新]をすると,置換後の文字列がリストビューとエディットボックスで,交換される
                      もしや、と思いテストしてみるとタイプ別設定『正規表現キーワード』の[色指定]も同様に交換されます。
                      こっちは直してません。
                      #誰か~
                      ・CPropComFileName.cppを入れ忘れていたから入れた
                      ・全角英数→半角英数と半角英数→全角英数の名前が逆なのを修正

                      ■バイナリ&パッチ(ソース)版
                      sakura_2002-12-11_mydoc5.zip

                      ■パッチ(ソース)版
                      mydoc05.zip

                      ついでに,アウトライン解析にsted formatを追加するパッチも作ってみました。
                      sted01.zip
                      • [2522] Re10: sted01.zip げんた 2002年12月11日 22:45

                        >ついでに,アウトライン解析にsted formatを追加するパッチも作ってみました。
                        アウトラインタイトルの末尾にCRLFが入ってしまい,それが画面上で・・として見えてしまうのが気になります.

                        CEditDoc::MakeTopicTree_sted()の
                        _tcsncpy( szTitle, pLine, MAX_TITLE );
                        szTitle[MAX_TITLE] = '\0';
                        で,最後の改行コードを除いてコピーしないといけないと思いますが,Unicodeでも動くようにするにはどう書けばいい? CMemoryクラスを直して行末コード末尾の文字数を適切に返すようにする必要ってありますか?
                        • [2529] Re11: sted01.zip もか 2002年12月13日 13:13


                          ▼ げんたさん
                          >アウトラインタイトルの末尾にCRLFが入ってしまい,それが画面上で・・として見えてしまうのが気になります.
                          >
                          >CEditDoc::MakeTopicTree_sted()の
                          >_tcsncpy( szTitle, pLine, MAX_TITLE );
                          >szTitle[MAX_TITLE] = '\0';
                          >で,最後の改行コードを除いてコピーしないといけないと思いますが,Unicodeでも動くようにするにはどう書けばいい?
                          ...たしかにその通りです。ご指摘ありがとうございます。

                          この関数に関してだけは
                          _tcsncpy( szTitle, pLine, min(nLineLen, MAX_TITLE) );
                          szTitle[min(nLineLen, MAX_TITLE)] = '\0';
                          でどうでしょうか。

                          >CMemoryクラスを直して行末コード末尾の文字数を適切に返すようにする必要ってありますか?
                          今の所(MakeTopicTree_stedにおいては)必要はないようです。
                          サクラ全体を見るとどうなんでしょう?

                          #どうゆうわけか、WinXPではツリー末尾が・・になりませんでした。妙なところが賢くなってますね>WinXP
                      • [2528] Re10: mydoc5.zip すい 2002年12月12日 23:42

                        >mydoc5 をegroupsにアップロードしました。

                        Alias の %MYDOC% は動くのに %MYPICT%,%COMDOC% なんかが動作しませんね。
                        MetaAlias の検索部が変わったせい?

                        他は異常無しっぽいです。
                        • [2546] Re11: mydoc7.zip もか 2003年01月16日 17:05

                          ようやくアップしました。
                          • [2547] Re12: mydoc7.zip すい 2003年01月17日 12:16

                            指をくわえて眺めています。(;_;) (バイナリが無いようなので)

                            # 個人的にはマクロフォルダ %MACRODIR% の復帰(? とは言わないかも?(^^;) )希望。

                            レジストリから文字列を取得後、「// 最後のフォルダ区切り記号を削除する」
                            していますが、その処理中で「// SJIS読み飛ばし」していますが、
                            これでは読み飛ばしていないのでは?と思いました。
                            > if( _IS_SJIS_1( (unsigned char)*pStr ) && _IS_SJIS_2( (unsigned char)pStr[1] ) ){
                            >   // SJIS読み飛ばし
                            > }else
                            「// SJIS読み飛ばし」の場所で「pStr++」しないと。
                            現状では2バイト文字の1バイト目の時は“文字列末尾の '\\' 判定処理”しませんが、
                            次のループでは pStr が +1されて2バイト文字の2バイト目の文字をそのまま
                            “文字列末尾の '\\' 判定処理”しちゃいそう。
                            レジストリから取得した文字列の末尾が '表' だったりしたら2バイト目の 0x5C が消えちゃいませんか?
                            試していない(試せない)んですけど。

                            他
                            今、処理が

                            1.%~% の ~ の値をレジストリから取得する。
                              取得できたら、末尾から '\\' 削除。

                            2.レジストリから所得できなかったら ~ の値を環境変数から取得する。
                              取得できたら “短いファイル名”⇒“長いファイル名” 変換する。

                            3.取得できなかったらそのまま %~% という文字列を使用する。

                            になっていますが、

                            1.%~% の ~ の値をレジストリから取得する。

                            2.レジストリから所得できなかったら ~ の値を環境変数から取得する。

                            3.レジストリまたは環境変数から文字列を取得できたら、
                              {
                                “短いファイル名”⇒“長いファイル名” 変換
                                末尾の '\\' を削除
                              }
                              して使用する。

                            4.取得できなかったらそのまま %~% という文字列を使用する。

                            にした方が良さげな気が。
                            万が一、レジストリから取得した文字列が“短いファイル名”だったら?とか
                            環境変数から取得した文字列の末尾に '\\' が付いていたら?とか。
                            # あんまり あり得なさそうな気はしますが。
                            文字列が見つかった後の置換処理も1箇所で済みますし。
                            • [2548] Re13: mydoc7.zip すい 2003年01月17日 12:43

                              >1.%~% の ~ の値をレジストリから取得する。
                              >2.レジストリから所得できなかったら ~ の値を環境変数から取得する。
                              >3.レジストリまたは環境変数から文字列を取得できたら、
                              >  {
                              >    “短いファイル名”⇒“長いファイル名” 変換
                              >    末尾の '\\' を削除
                              >  }
                              >  して使用する。
                              >4.取得できなかったらそのまま %~% という文字列を使用する。

                              if %SAKURA% {
                                nMetaLen = 6
                                szPath = エディタのパス
                              }
                              else if %MACRODIR%{
                                nMetaLen = 8
                                szPath = マクロのパス
                              }
                              else{
                                ALIAS 処理
                                szPath = レジストリから取得
                                取得できなかった{
                                  szPath = 環境変数から取得
                                  取得できなかった {
                                    %~~% をそのまま使用して continue;
                                  }
                                }
                              }

                              “短いファイル名”⇒“長いファイル名” 変換
                              末尾の '\\' 削除

                              nPathLen = _tcslen( szPath );
                              if( pd + nPathLen < pd_end && nPathLen != 0 ){
                                _tmemcpy( pd, szPath, nPathLen );
                                pd += nPathLen;
                                ps += nMetaLen;
                              }else{
                                *pd = '\0';
                                return false;
                              }
                              continue;

                              なんて雰囲気にしておけば、後々 %SAKURA% なんかの「独自のメタ文字列」の
                              追加も楽かな~~?とか思ったりしました。(^^)ゞ
                              • [2550] Re14: mydoc8.zip もか 2003年01月28日 17:39

                                ▼すいさん
                                >「// SJIS読み飛ばし」の場所で「pStr++」しないと。
                                みごとに読み飛ばしてないみたいですね。

                                以下変更点概要です。
                                ・SJISを読み飛ばしていなかったのを修正
                                ・すいさんの書いたような流れに書き換え
                                ・短いファイル名→長いファイル名変換に時間がかかるようなので、メタ文字の展開をキャッシュするように変更
                                ・トレイメニューも簡易表示を行うように追加

                                %MACRODIR%はとりあえず保留としておきます。

                                #もう、2ヶ月経過したのか。。
                                • [2551] Re15: mydoc8.zip すい 2003年01月29日 20:53

                                  大体うまいこと動いています。

                                  「%% は %」の処理、ps++ が抜けてるっぽいわん。
                                  ポインタ ps を1文字余計に進めないと。
                                  実際に試して見ると %% を % とみなす処理が機能していませんね。%% の扱いのまま。

                                  // %% は %
                                  if( '%' == ps[1] ){
                                    *pd = '%';
                                    pd++;
                                    ps++;  ← 必要
                                    continue;
                                  }

                                  他はソースを追えていないです。キャッシュとか。 # 眠ひ (_ _)/..zzZZZ
                                  でも動作を見た感じでは問題無いようですので。すんばらしいっす。
                                  • [2553] Re16: mydoc8.zip もか 2003年02月01日 19:02

                                    ▼すい
                                    >大体うまいこと動いています。
                                    >「%% は %」の処理、ps++ が抜けてるっぽいわん。
                                    >ポインタ ps を1文字余計に進めないと。
                                    毎度、お世話になります。m(__)m

                                    #Ctrl + Tab を押しつづけると、ウィンドウタイトルがアクティブでなくても
                                    #フルパスのままになってしまうようですが、昔からそうだったのかな?