エディタでの実装

マクロ関連クラスの改造

WSHマクロで使用できるインタフェースオブジェクトを、Editorだけではなく複数扱えるように修正した。
CWSHManager                   WSHマクロ実行の入り口。
                              .ExecKeyMacro関数の中でCWSHClientを作成する。
CWSHClient                    WSH呼び出しの入り口。
CIfObj                        純粋なインタフェースオブジェクト
  - CWSHIfObj                   WSHマクロに特化したインタフェースオブジェクト
      - CEditorIfObj              今までのEditorオブジェクト
      - plugin/CPluginIfObj       プラグイン共通機能を提供するPluginオブジェクト
      - plugin/COutlineIfObj      アウトライン解析機能を提供するOutlineオブジェクト
      - plugin/CSmartIndentIfObj  スマートインデント機能を提供するIndentオブジェクト
      - plugin/CComplementIfObj   補完候補検索機能を提供するComplementオブジェクト

プラグイン関連クラス構成

CPlug
  - CWSHPlug
  - CDllPlug
CPlugin
  - CWSHPlugin
  - CDllPlugin
CPluginManager
CJackManager

課題

・ファイルタイプの判定
 アウトライン解析とスマートインデントはタイプ別設定画面の選択肢に追加することで どのプラグインを有効にするか選択できる。
 その他の新たな機能をプラグインにする場合、タイプ別設定画面の改造が必要。
 あるいはタイプ別設定画面に拡張可能な設定(プラグイン個別設定のような)のタブを追加するか?
・DLLでもWSHと同じようにEditorオブジェクトの機能を使えるのか?
・コマンドを動的に追加できるのか?reallocする?追加したコマンドをツールバーに追加した場合、設定ファイルにどのように記録されるか。
 →ツールバーボタンのテーブルはvector化した。
  設定ファイルへはとりあえず改造の手間が少ないよう、2xxyyのような番号で記録している。
  xxはプラグインを識別する番号であり(少なくともローカルPC内で)、yyはプラグイン中でプラグを識別する番号である。
  この方針だと、同時に使用できるプラグインが最大99個に制限される。
  また、xxをどうやって割り振るのか未定。
  →プラグイン番号xxの割り振りは、プラグインのインストール時にプラグインテーブルの空き番号を割り当てることにした。
・プラグインの読み込みをNormalProcessの起動ごとに行うのは無駄なので、ControlProcess起動時に1度だけ読み込んで使いまわしたいが、プロセスまたがりなので共有メモリを使わなければならない。
 今の作りはSTLとか使いまくりなので共有メモリにしづらい。
・ツールバーの設定はアイコンBMPの番号で記録されているため、プラグインコマンドを登録した後プラグインの削除などを行うと、次回起動時にアイコンがずれてしまう。
→ボタン番号で記憶している限り解決しないため、プラグインコマンドのみINI上では「プラグイン名/プラグ番号」の形式で記録するようにした。

「アウトラインプラグインから付加文字を変更する」
・VBやC関数一覧などリスト系の備考欄カスタマイズ(いらない気も)
 →SetLabel関数で対応(Ver.2.0.9.0以降)

前へ<  >次へ