◀ANSI版開発トップへ
  • 3688 キーワードの上限を緩和するパッチ
    • 3802 Re: キーワードの上限を緩和するパッチ
      • 3829 Re2: キーワードの上限を緩和するパッチ
        • 3830 Re3: キーワードの上限を緩和するパッチ
        • 3831 Re3: キーワードの上限を緩和するパッチ
          • 3832 Re4: キーワードの上限を緩和するパッチ
  • [3688] キーワードの上限を緩和するパッチ もか 2004年08月02日 03:28

    keywordの配列を、3次元固定長配列だったものを、
    2次元配列に変更して、可変長3次元配列のようにして使うパッチです。
    キーワード数の上限は、基本的には全てのセットのキーワードの合計で決まります。
    キーワードセット数の上限は従来のままです。
    まあ、きれいなソースではないので、プレビュー版です。
    eGroups>keyword02.zip
    • [3802] Re: キーワードの上限を緩和するパッチ もか 2004年11月25日 18:40

      2chのほうで話題になっているらしい事と関連するので、念のためアナウンスします。
      元記事の放置してあったものですが、重大なバグがありました。
      設定ファイル読み込み時に、キーワードセットの17個目以降のキーワードが、すべてクリアされてしまいます。
      先(2004-11-25T18:30+09:00)ほど更新しましたので、前のバージョンを、運悪く発見してダウンロードした人は、気をつけてください。
      バグのある旧バージョン:keyword02.zip(Yhaooブリーフケース) / sakura_2004-10-02kwnew.zip
      修正版:sdiff_2004-10-02keyword03.tar.gz / sakura_2004-10-02kwnew03.zip
      なお、バイナリはバージョンダイアログの一番下にパッチ名が入っているのでわかります。

      ちなみに、現在の正式版のサクラエディタは、キーワードの保持に
      20 * 2000 * 101 = 4040000(4MB)
      このパッチ適用後は、
      15000 * 100 + 164(管理用追加分) = 1500164(1.5MB)
      共有メモリを使用します。

      #キーワードにはできないけれど、99文字あればHello Woldが作れますね。
      #public class MyClass { public static void main(String s[]) { System.out.println("Hello world"); } }
      • [3829] Re2: キーワードの上限を緩和するパッチ もか 2005年01月27日 23:30

        ▼げんたさん(Red: 強調キーワード10個) >>3821
        >最終的には可変長パッチを取り込むことになるとは思いますが...
        ということを受けて、更新しました。
        なお、実験用本体に移動しました。

        1.5.1.0で加わった、キーワード数の表示は、
        セットのキーワード数 / (セットで確保しているキーワード数 + 未使用域)
        の表示に変更しました。
        未使用域は、全キーワードセットで共通なので、未使用領域が、10000の場合
         セットA : 123 / 10150
         セットB : 30 / 10050
        と表示されて、セットBを70個などにすると、
         セットA : 123 / 10100 ←未使用50減
         セットB : 70 / 10050 ←確保50増 + 未使用50減 = 変わらず
        となります。

        あと、CShareData::Initの「強調キーワードのテストデータ」をAddKeyWordしていたものを、専用関数に変更しました。
        体感的には起動が0.1秒くらい早くなる気がします。

        #主な変更点はサイトを参照ください :-)
        • [3830] Re3: キーワードの上限を緩和するパッチ げんた 2005年01月29日 00:36

          >▼げんたさん(Red: 強調キーワード10個) >>3821
          >>最終的には可変長パッチを取り込むことになるとは思いますが...
          >ということを受けて、更新しました。
          ありがとうございます.早速試してみます.

          と,ページを見ると他にも
          ・編集不可モード
          ・行マークの制限緩和
          ・再変換の選択範囲拡張を無効にできるオプション
          などなど,せっかく作って頂いたのに追いついていない部分がありますね.
          すいませんです.
        • [3831] Re3: キーワードの上限を緩和するパッチ げんた 2005年01月29日 18:13

          CKeyWordSetMgrを中心に一通り見て,コメント追加したりしました.
          共有フォルダの kwd_modify_200501029.zip です.

          CanAddKeyWord()が確保済みエリアに空きがあっても共通空き領域を使い切っているとメモリ不足と判定するようでしたので,確保済みエリアの空きをまず確認するように修正しました.

          KeyWordAlloc()の末尾に領域だけ確保するという動作がちょっと固定的すぎてわかりにくいと感じたのと,1回しか使わないのにKeyWordReAlloc()と分けるのも保守しにくくなるかと思いましたので,サイズ0のセット領域を設定してからReAllocし,失敗した場合はカウンタを戻すようにしてみました.

          領域拡張等の操作でm_nStartIdx[]の未使用領域にも演算を行っていますが,セット数+1まで設定すれば十分ではないかと...

          ---
          ご認識がありましたら指摘して頂ければと思います.

          >(セットで確保しているキーワード数 + 未使用域)
          >の表示に変更しました。
          見てみましたが,ちょっとわかりにくいように思います.
          (セットで確保しているキーワード領域の残数 + 未使用域)
          で残りを表示した方がわかりやすいのではないかと思いましたがどうでしょうか?

          >あと、CShareData::Initの「強調キーワードのテストデータ」をAddKeyWordしていたものを、専用関数に変更しました。
          >体感的には起動が0.1秒くらい早くなる気がします。

          関係ないですが,CShareData::Init()はキーワード登録がかなりの行数を消費しているので
          その部分を別関数に分離しようと考えています.
          • [3832] Re4: キーワードの上限を緩和するパッチ もか 2005年01月30日 04:12

            げんたさんの指摘箇所とは関係ないですけど、、
            共通設定のキーワード一覧を表示する箇所で、非表示→一気に表示に変更したら、キーワード表示の長さが固定されていました。
            ここの変更は元に戻す他ないようです。

            >領域拡張等の操作でm_nStartIdx[]の未使用領域にも演算を行っていますが,セット数+1まで設定すれば十分ではないかと...
            昔のコードのときに、初期設定より多くINIが設定されていて、しかも番号が飛んでるときに、矛盾するのを防ぐためです。
            今は、考慮するのは諦めたため、まったく意味はないですね。

            >CShareData::Init()はキーワード登録(中略..)
            >その部分を別関数に分離しようと考えています.
            つにでに無効に…とは言えないから、IOProfileでセクションが読みこめなかったときに設定するように変更してはどうでしょうか。

            他の項目は、まだ見ていないため保留します。