エディタでの実装
マクロ関連クラスの改造
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以降)
前へ< >次へ