◀ANSI版開発トップへ
  • 3576 ちょい機能強化パッチ
    • 3600 Re: ちょい機能強化パッチ
      • 3601 Re2: ちょい機能強化パッチ
        • 3603 Re3: ちょい機能強化パッチ
          • 3606 Re4: ちょい機能強化パッチ
            • 3607 Re5: ちょい機能強化パッチ
            • 3610 その他追加質問 Re5: ちょい機能強化パッチ
              • 3612 RE: その他追加質問 Re5: ちょい機能強化パッチ
    • 3621 RE: ちょい機能強化パッチ
      • 3622 Re2: ちょい機能強化パッチ
        • 3624 Re3: ちょい機能強化パッチ
          • 3625 Re4: ちょい機能強化パッチ
  • [3576] ちょい機能強化パッチ もか 2004年05月13日 23:12

    ※削除による記事番号重複により、再投稿します。
    レビュー段階ということでパッチだけ出します。
    noviceさんのdiff_ssrc_2004-05-01.zipと一緒にパッチ当てると衝突するかもしれないっす。
    内容自体は、衝突しないはず。
    対象:ssrc_2004-05-01.tar.bz2
    ファイル名:(e-Groups) plus040501_01.zip

    ・選択文字列でタグジャンプするように
    ・ファイル名のみのタグジャンプ時は、カーソル行桁位置を指定しない
    ・ファイル名指定なしまたは、指定したファイルがない場合でも-TYPEを利用可能
    ・-TYPEによる強制指定をした場合のパフォーマンス改善
    ・起動時のウィンドウ位置・サイズ(大きさ)の制御を強化
    位置とサイズをそれぞれ
    1. Windowsに任せる
    2. 最後に変更した状態を引き継ぐ(継承する)
    3. ユーザが設定した値を利用する
    の中から選ぶことが出来ます。
    なお、コマンドラインオプション(-SX,-SY,-WX,-WY)を指定した場合、コマンドラインが優先されます。
    ・「異なるバージョンのエディタを起動するとバージョン表示が最後に起動したエディタのものに」を修正
    ・iniにエディタのバージョンを記録する
    これは、みく氏のバージョンアップクラスの一部です。
    • [3600] Re: ちょい機能強化パッチ げんた 2004年05月29日 15:15

      > ・ファイル名のみのタグジャンプ時は、カーソル行桁位置を指定しない
      よく見ると,(既存部分ですが)行桁位置が-1のとき無指定とみなすルールを暗黙に使っていますね.
      負の座標を受け入れるようにするとここも影響を受けますね.

      > ・ファイル名指定なしまたは、指定したファイルがない場合でも-TYPEを利用可能
      > ・-TYPEによる強制指定をした場合のパフォーマンス改善
      これって効果あります?ファイル読み込みとはできるだけ分離する方向の方が良いと思いますが.
      ファイルが無い場合のTYPE指定のためにFileReadの外で種別を設定しているのに,ファイルがある場合はFileReadの中に入れるのはわかりにくい.

      --
      ウィンドウ指定は機能的には早く取り込みたいですね.

      部分的に取り込むか...
      • [3601] Re2: ちょい機能強化パッチ もか 2004年05月30日 01:46

        ▼ げんたさん
        >> ・ファイル名のみのタグジャンプ時は、カーソル行桁位置を指定しない
        >よく見ると,(既存部分ですが)行桁位置が-1のとき無指定とみなすルールを暗黙に使っていますね.
        >負の座標を受け入れるようにするとここも影響を受けますね.
        レビューありがとうございます。
        負の座標を受け入れるのは、ウィンドウの左上の位置だけでいいのでは?
        行桁位置は、FileInfoも-1のとき未指定の意ですし、負は使えませんです。

        >>-TYPEによる強制指定
        >これって効果あります?ファイル読み込みとはできるだけ分離する方向の方が良いと思いますが.
        >(省略...実装方法が)わかりにくい.
        効果ですが、
        従来は、ファイル名の拡張子によるタイプ別を適用後、ファイルを読み込み、
        その後、再度タイプ別を変更していたため、レイアウト解析を2回おこなっていました。
        付属のtxtに記述したのですが、掲示板・ソース上には書いていませんでした。すみません。
        実装のほうは、作った本人すら、わかりにくいと感じるレベルのためrev.04で書き直してみました。

        >ウィンドウ指定は機能的には早く取り込みたいですね.
        >部分的に取り込むか...
        古い版はバグつきなので、plus040501_03.zip 以上でお願いします。

        同_04.zip こちらは、げんたさんの意見を反映したつもりの修正案です。
        マイナス座標を受け入れるようにした&すこしだけわかりやすくしたもの。
        (差分ファイルのみ更新、収録)
        問題なければ、こちらで。
        • [3603] Re3: ちょい機能強化パッチ げんた 2004年05月30日 02:20

          >負の座標を受け入れるのは、ウィンドウの左上の位置だけでいいのでは?
          >行桁位置は、FileInfoも-1のとき未指定の意ですし、負は使えませんです。
          失礼.ウィンドウ位置と勘違いしていました.

          >>これって効果あります?ファイル読み込みとはできるだけ分離する方向の方が良いと思いますが.
          >>(省略...実装方法が)わかりにくい.
          >効果ですが、
          >従来は、ファイル名の拡張子によるタイプ別を適用後、ファイルを読み込み、
          >その後、再度タイプ別を変更していたため、レイアウト解析を2回おこなっていました。
          理論的にはその通りなのですが,目に見えるほどの効果が出ないのであればわかりやすさを優先した方が良いと思います,というつもりでした.しかしレイアウトの再生成が走るとファイルサイズによっては結構大きいかな?
          • [3606] Re4: ちょい機能強化パッチ もか 2004年05月30日 21:16

            >>その後、再度タイプ別を変更していたため、レイアウト解析を2回おこなっていました。
            >理論的にはその通りなのですが,目に見えるほどの効果が出ないのであればわかりやすさを優先した方が良いと思います,というつもりでした.しかしレイアウトの再生成が走るとファイルサイズによっては結構大きいかな?
            実際に比較してやってみると、今の実装は危険なことが発覚しました。
            しかも、このパッチを当てても大差ないです。
            >>dev::3498 処理中のメッセージループ動作 と関係があるのですが、
            レイアウト構築中(CLayout::DoLayout)に文字入力などを行うと、タイミングによりレイアウト情報が破壊されます。
            CEditDoc::FileReadから呼び出されるレイアウト解析では、プログレスバーを表示しますが、
            CEditDoc::OnChangeSetting経由で変更されるレイアウト解析では、プログレスバーの表示をしません。
            強制指定によるレイアウト更新は、後者なのでプログレス表示がなく、「ファイルを開き終えた」ように見えますが、裏で2回目のレイアウト情報を作成中です。
            そのため、このパッチ適用後でも、見た目は体感速度に差が現れにくいです。
            同様に、ウィンドウ幅折り返しを行った直後も危険です。
            ちなみにCeleron2.2Ghzで6MBのHTMLファイルだとレイアウト作成は、1秒前後です。
            • [3607] Re5: ちょい機能強化パッチ げんた 2004年05月30日 22:21

              >タイトル: Re5: ちょい機能強化パッチ
              >発言者: もか
              >>>その後、再度タイプ別を変更していたため、レイアウト解析を2回おこなっていました。
              >>理論的にはその通りなのですが,目に見えるほどの効果が出ないのであればわかりやすさを優先した方が良いと思います,というつもりでした.しかしレイアウトの再生成が走るとファイルサイズによっては結構大きいかな?
              >実際に比較してやってみると、今の実装は危険なことが発覚しました。
              >レイアウト構築中(CLayout::DoLayout)に文字入力などを行うと、タイミングによりレイアウト情報が破壊されます。
              まじですか.

              ----
              早速パッチを作り直してもらったあとでこういうことを言うのは気が引けるのですが,あれからよく考えてみたところCEditDoc::FileRead()という関数はファイル読み込み時のCEditDoc関連設定を*すべて*行うと考えるのが妥当で,Crateではそれを流用していると考えるのが妥当でしょう.ですからタイプ設定を外に出すのはやっぱり好ましくないのかなと.
              そう考えるとファイルタイプオプションを追加するバージョンの方がbetterなのかなと.
              ついでに先にタイプを指定するとファイル読み込みに失敗して中断したときにちょっと変な感じ.
            • [3610] その他追加質問 Re5: ちょい機能強化パッチ げんた 2004年06月01日 00:27

              さっさとリリースしろと怒られそうですが,細かい点でよくわからないところがあったのでちょっと質問です.

              CEditDoc.cpp:771
              DrawCaretPosInfo();をSetNewLineCode()の後ろから移動しているのは1行目に改行がない場合に行桁位置が表示されないのかなと思ったのですが,実際試してみるとそんなことはない.ということはFile Openに失敗した場合にこの変更が効いてくるのですか?

              CEditDoc.h:112
              CEditView& ActiveView(void)を追加していますが,そのすぐ上の
              const CEditView& ActiveView(void)は削除すべきでは?
              戻り値のみが異なる関数はOverloadと見なされないはずですがなぜコンパイルエラーにならないのかな?

              てゆーかconstが付いている方は,私のconstに対する理解が不十分だったためと思われるので恥ずかしいから消しておいて...(^^ゞ

              CEditWnd.cpp:253
              RegisterClassEx()の結果がNULLの時に処理を中断するようにしていますが,なぜ今まで処理中断がコメントアウトされていたと思いますか?(別に試しているわけではありません.私も不思議に思っています.)

              CShareData.cpp:137
              const unsigned int uShareDataVersion = 0x80010032; の0x80010032って一体...??
              その上のコメントとも合ってないですし....
              • [3612] RE: その他追加質問 Re5: ちょい機能強化パッチ もか 2004年06月01日 02:25

                >CEditDoc.cpp:771
                >DrawCaretPosInfo();をSetNewLineCode()の後ろから移動しているのは1行目に改行がない場合に行桁位置が表示されないのかなと思ったのですが,実際試してみるとそんなことはない.ということはFile Openに失敗した場合にこの変更が効いてくるのですか?
                特殊な状態だったか、標準入力がらみだったような気がします。なにぶん半年くらい前に書いたので、うろ覚えです。

                >CEditDoc.h:112
                >CEditView& ActiveView(void)を追加していますが,そのすぐ上の
                >const CEditView& ActiveView(void)は削除すべきでは?
                >戻り値のみが異なる関数はOverloadと見なされないはずですがなぜコンパイルエラーにならないのかな?
                class hoge{
                rettypeA Method() const;
                rettypeB Method();
                }
                のように、constと非constは、Overload可能です。std::listとかそうなってます。
                もっとも、最近知ったんですけど。
                const CEditDoc経由で使うことがあれば取っといて損は無いかと。

                >CEditWnd.cpp:253
                >RegisterClassEx()の結果がNULLの時が,なぜ今まで処理中断がコメントアウト?
                なんででしょう。私にもわかりません。
                NULLになれば必然的に、次のCreateWindowExで失敗するはずなのですが、こちらも元ソースでは最後まで突き進むようだし。
                RegisterClassExは、そうそう失敗しないから止めた、位しか思いつきません。
                同じプロセスから同一名称を2回登録しようとすると2回目以降エラーになるのであれば(未確認)、マルチスレッド版のためにコメントアウトしたと推測できます。

                >CShareData.cpp:137
                >const unsigned int uShareDataVersion = 0x80010032; の0x80010032って一体...??
                >その上のコメントとも合ってないですし....
                えーと。適当な値です。パッチが「テスト用」なんで、その…ゴミです。
                noviceさんのが50で、これは51になるか、noviceさんのと合わせて50になると踏んでいたので。
                #プライベートuShareDataVersionとかないですかね。
                #私は、テスト用を常用しているけど、固定値を変更して独自コンパイルしている人とか、番号そのままだと危ないと思うのですが。
    • [3621] RE: ちょい機能強化パッチ げんた 2004年06月05日 13:42

      > ・選択文字列でタグジャンプするように
      これの意味がソースを見てもどうもよくわからなかったのですが...
      まず,WZ風のGrep出力の中(・か■で始まる行)では全く動作しませんよね.
      また,ファイル名かどうかを判定するところで選択文字列全体を渡しているのでファイル名以外が入っていたらファイルがないと認識されます.しかし,タグジャンプならファイル名以外が入っていて当たり前なのでそこで必ず失敗しますよね.
      • [3622] Re2: ちょい機能強化パッチ もか 2004年06月05日 15:48

        ▼ げんたさん
        > > ・選択文字列でタグジャンプするように
        > しかし,タグジャンプならファイル名以外が入っていて当たり前なのでそこで必ず失敗しますよね.
        #include "myhead.h" はファイル名でタグジャンプします。このパターンはどこぞの専用処理によりジャンプできます。
        a href="link.html" は従来、がんばってもジャンプできません。
        • [3624] Re3: ちょい機能強化パッチ げんた 2004年06月05日 16:06

          >a href="link.html" は従来、がんばってもジャンプできません。
          うーんなるほど.でもタグジャンプというとファイル名+ジャンプ位置へ飛ぶのが普通でしょうから,ファイル名の後ろに行番号が付いているとジャンプできない物をタグジャンプと呼ぶのはちょっとなぁと思ってしまいます.

          という前に,次回へ回してしまいました.
          • [3625] Re4: ちょい機能強化パッチ もか 2004年06月06日 20:12

            >ファイル名の後ろに行番号が付いているとジャンプできない物をタグジャンプと呼ぶのはちょっとなぁと思ってしまいます.
            歴史的な定義というか「タグでなはい」ものからジャンプしては、タグジャンプとは確かに言えないですね。
            その辺を少し考慮して、ファイル名全部を正しく選択しない限り、ジャンプしないようにしたつもりでした。
            >まず,WZ風のGrep出力の中(・か■で始まる行)では全く動作しませんよね.
            というのも、(答えてなかった..)Grep結果からのジャンプ動作には影響が無いように考慮したからです。
            Grep結果内を再検索して、その行でタグジャンプした場合に問題になるからです。
            ...あ、Grepでないフォーマットだったら同様に問題ありです。
            優先順位をひっくり返して
            普通のタグジャンプ>選択文字列をファイルとしてジャンプ>ダイレクトタグジャンプ
            普通のタグジャンプ>ダイレクトタグジャンプ>選択文字列をファイルとしてジャンプ
            とかにしたほうがいいかもしれません。
            ただし、こうすると、
            +++ FileName.cpp Sun May 30 18:15:54 2004
            という行は、FileName.cppの「30」行目にジャンプするしかなくなります。