◀ANSI版開発トップへ
  • 3568 タグジャンプ機能追加
    • 3577 Re: タグジャンプ機能追加
      • 3583 Re2: タグジャンプ機能追加
        • 3585 Re3: タグジャンプ機能追加
          • 3640 Re4: タグジャンプ機能追加
            • 3645 Re5: タグジャンプ機能追加
              • 3646 Re6: タグジャンプ機能追加
                • 3648 Re7: タグジャンプ機能追加
                  • 3650 Re8: タグジャンプ機能追加
              • 3657 Re6: タグジャンプ機能追加
                • 3661 Re7: タグジャンプ機能追加
                  • 3666 Re8: タグジャンプ機能追加
                    • 3669 Re9: タグジャンプ機能追加
  • [3568] タグジャンプ機能追加 novice 2004年05月04日 00:15

    「タグジャンプ元」と「タグジャンプ先」が同じファイルであるときでも、タグジャンプバックできるように変更しました。

    変更対象ファイル
    ssrc_2004-05-01.tar.bz2

    差分ファイル
    diff_ssrc_2004-05-01.zip

    その他
    (1)タグジャンプ情報を「共有メモリ」に保存しているため、共有メモリのバージョンの変更しました。
    (2)タグジャンプできる回数は最大100回です(MAX_TAGJUMPNUMの設定値を変更して調整できます)。
    (3)「タグジャンプバック」できないときの表示を、「タグジャンプ」できないときの表示に合わせました(MYMESSAGEBOX→SendStatusMessage)。
    (4)「MAX_CUSTMACRO」の定義を「Funccode.h→CShareData.h」に移動しました。
    • [3577] Re: タグジャンプ機能追加 もか 2004年05月14日 00:08

      >「タグジャンプ元」と「タグジャンプ先」が同じファイルであるときでも、タグジャンプバックできる
      実は、これ欲しかったんです!
      >(2)タグジャンプできる回数は最大100回です
      スタック方式になっているようで、100回ジャンプした後は、記録されない仕様なんですね。
      私は、記録できないより、古いほうを消して新しいほうを記録したほうがよいと思います。
      それからCommand_TAGJUMPBACKで、tagJump.hwndRefererがサクラエディタの編集ウィンドウか、
      調べていません。
      もし、参照元ウィンドウを閉じて、同じハンドルがほかのプログラムに割り当てられた場合、
      SendMessageで、そのプログラムが予期せぬ動作をするかもしれません。
      • [3583] Re2: タグジャンプ機能追加 novice 2004年05月21日 16:43

        ▼ もかさん
        > スタック方式になっているようで、100回ジャンプした後は、記録されない仕様なんですね。
        タグジャンプ→タグジャンプバックの使用方法を考えるとスタック方式が一番しっくりくるかなと思いました。

        > 私は、記録できないより、古いほうを消して新しいほうを記録したほうがよいと思います。
        スタック方式だけど、オーバフローしたら、一番下のスタックを書き換える、という動作でよろしいですか?

        m_TagJump[0] = 1番目のタグジャンプ情報
        m_TagJump[1] = 2番目のタグジャンプ情報
        ...
        m_TagJump[MAX_TAGJUMPNUM-1] = MAX_TAGJUMPNUM番目のタグジャンプ情報

        上記の状態のとき、さらにタグジャンプしたら、m_TagJump[0]を書き換える、という感じでしょうか?
        (ただし、タブジャンプバックしてもm_TagJump[1]までしか戻らない)

        > それからCommand_TAGJUMPBACKで、tagJump.hwndRefererがサクラエディタの編集ウィンドウか、
        > 調べていません。
        > もし、参照元ウィンドウを閉じて、同じハンドルがほかのプログラムに割り当てられた場合、
        > SendMessageで、そのプログラムが予期せぬ動作をするかもしれません。
        下記の修正で問題ないでしょうか?

        ■変更前
        /* タグジャンプ情報の参照 */
        if( !CShareData::getInstance()->GetTagJump(&
        tagJump) || NULL == tagJump.hwndReferer ){

        SendStatusMessage("タグジャンプバックできません");
        m_pShareData->m_TagJumpNum = 0;
        return;
        }

        ■変更後
        /* タグジャンプ情報の参照 */
        if( !CShareData::getInstance()->GetTagJump(&
        tagJump) || !CShareData::IsEditWnd(tagJump.hwndReferer) ){
        SendStatusMessage("タグジャンプバックできません");
        m_pShareData->m_TagJumpNum = 0;
        return;
        }
        • [3585] Re3: タグジャンプ機能追加 もか 2004年05月23日 23:13

          >タグジャンプ→タグジャンプバックの使用方法を考えるとスタック方式が一番しっくりくるかなと思いました。
          微妙に危惧しているのは、A→Bにタグジャンプ。C→Dにタグジャンプした後、
          Bでタブジャンプバックすると、従来はAに飛びましたが、Cに飛ぶようになるので、
          ちゃんとアナウンスしないと、「タブジャンプバックが違うウィンドウに移動するけどバグ?」とかいわれそうです。
          #私はそういう使い方はしないし、2回タグジャンプバックすればいいので気にならないけど、そういう人もいるかも
          >スタック方式だけど、オーバフローしたら、一番下のスタックを書き換える、という動作でよろしいですか?
          >(中略...)
          そういう動作でいいです。

          >> SendMessageで、そのプログラムが予期せぬ動作をするかもしれません。
          >下記の修正で問題ないでしょうか?
          >(中略...)
          見た限りではOKです。
          • [3640] Re4: タグジャンプ機能追加 げんた 2004年06月19日 23:10

            すいません.どなたか最終版パッチ作ってくださいませんか?
            このままだとずっと先送りしそうなので.
            • [3645] Re5: タグジャンプ機能追加 novice 2004年06月21日 13:33

              ▼ げんたさん
              > すいません.どなたか最終版パッチ作ってくださいませんか?
              > このままだとずっと先送りしそうなので.

              最新版ソースに対する差分ファイルを作成しました。

              変更対象ファイル
              ssrc_2004-06-19.tar.bz2

              差分ファイル
              diff_ssrc_2004-06-19.zip

              下記の処理はまだ実装できていません。すいません。

              >スタック方式だけど、オーバフローしたら、一番下のスタックを書き換える、という動作でよろしいですか?
              >
              >m_TagJump[0] = 1番目のタグジャンプ情報
              >m_TagJump[1] = 2番目のタグジャンプ情報
              >...
              >m_TagJump[MAX_TAGJUMPNUM-1] = MAX_TAGJUMPNUM番目のタグジャンプ情報
              >
              >上記の状態のとき、さらにタグジャンプしたら、m_TagJump[0]を書き換える、という感じでしょうか?
              >(ただし、タブジャンプバックしてもm_TagJump[1]までしか戻らない)
              • [3646] Re6: タグジャンプ機能追加 もか 2004年06月21日 19:09

                >下記の処理はまだ実装できていません。すいません。
                >>一番下のスタックを書き換える
                文句つけた手前、noviceさんが未着手ならば、実装します。どうですか?

                # diff_ssrc_2004-06-19.zipのファイルのタイムスタンプがなぜか未来なんです。
                # UNZIP32.DLL(Noah)だと、+9:00時間して解凍します。
                # Windowsの「圧縮フォルダ」だとアーカイブの時間を現地時間扱いにするのか、
                # 時差フィールドのようなものがあるのか、午後1:00前後になります。
                • [3648] Re7: タグジャンプ機能追加 novice 2004年06月21日 23:49

                  ▼ もかさん
                  > >下記の処理はまだ実装できていません。すいません。
                  > >>一番下のスタックを書き換える
                  > 文句つけた手前、noviceさんが未着手ならば、実装します。どうですか?

                  では、お言葉に甘えてお願い致します。

                  > # diff_ssrc_2004-06-19.zipのファイルのタイムスタンプがなぜか未来なんです。
                  > # UNZIP32.DLL(Noah)だと、+9:00時間して解凍します。
                  > # Windowsの「圧縮フォルダ」だとアーカイブの時間を現地時間扱いにするのか、
                  > # 時差フィールドのようなものがあるのか、午後1:00前後になります。

                  ちなみに上記ファイルの圧縮は、「+Lhaca」でやりました。
                  こちらで解凍してみた限りでは、特に問題ないようなのですが...
                  • [3650] Re8: タグジャンプ機能追加 もか 2004年06月22日 23:19

                    >> # diff_ssrc_2004-06-19.zipのファイルのタイムスタンプがなぜか未来なんです。
                    >ちなみに上記ファイルの圧縮は、「+Lhaca」でやりました。
                    >こちらで解凍してみた限りでは、特に問題ないようなのですが...
                    環境変数の「TZ=JST-9」してませんでした。あああ、またやってしまった。
                    申し訳ありません。m(__)m

                    実装のほうは、SetTagJump()が失敗することがなくなったため、戻り値をvoidにしようかboolのままにするか考え中...
              • [3657] Re6: タグジャンプ機能追加 みちばな 2004年07月05日 03:10

                > ssrc_2004-06-19.tar.bz2
                > diff_ssrc_2004-06-19.zip

                上記を落としてきて試してみたのですが、うまく動かずトレースしてみました。
                その結果、

                CEditView_Command.cpp 6895行の SendMesssageで m_nCaretPosX,m_nCaretPosYが更新されてしまい。
                ジャンプ先の場所がジャンプ元として保存されてしまっているようでしたので、
                その前で保存するように変更したらとりあえず機能するようになりました。
                (6933~6950行目を切り取って6883行に移動)

                ではでは、ご報告まで。

                # なお、ひ○まる乗換え組みのあちしと致しましては、これが実装されて誠に有難い気持ちでいっぱい。
                # ありがとうございました。
                • [3661] Re7: タグジャンプ機能追加 もか 2004年07月09日 20:55

                  みちばなさん、ありがとうございます。
                  やっとこさテストをしたので、パッチ出します。
                  tagjump02.zip です。

                  みちばなさんの変更も入れてあります。
                  全然気が付いていなかった...。
                  • [3666] Re8: タグジャンプ機能追加 げんた 2004年07月10日 05:28

                    >tagjump02.zip
                    ちょっと気になったところ:
                    メソッド名SetTagjump/GetTagjumpよりPushTagJump/PopTagJumpの方がスタックであることがわかりやすいと思います.
                    同名のC/C++ヘッダ/ソースを開く機能でタグジャンプバックの登録が取り除かれていますが,これはわざとなのかな?あると使いにくい?

                    > それからCommand_TAGJUMPBACKで、tagJump.hwndRefererがサクラエディタの編集ウィンドウか、
                    > 調べていません。
                    に対する修正 >>3583 が入っていない.
                    • [3669] Re9: タグジャンプ機能追加 もか 2004年07月11日 03:54

                      指摘のとおり、変更・修正しました。
                      C/C++の行き来は、考慮漏れか、意図的なのか分からないので、とりあえず従来のように登録するようにしました。
                      あと、CEditDoc::SetRefererが宣言だけ残っていたんで修正。
                      タグジャンプバックが失敗したときの、m_pShareData->m_TagJumpNum = 0をやめました。
                      一つ前は無効でも、さらに古いのが残っていたらそれも無効だとは限らないし。
                      tagjump03.zipです。