CompleteX リファレンス

Version 3.2 (2011/11/28)

目次

使い方

使ってみよう

名前補完モード

ベースフォルダにある CompleteWord.mac を実行するか、何も設定してない状態で CompleteX.mac を実行すると名前補完モードになります。名前補完モードでは現在編集中のファイル内にある単語が候補に挙がります*1。やってみましょう。

  1. 秀丸で適当なファイルを開きます。
  2. CompleteX.mac に割り当てたキーを押します。
  3. リストボックスが現れ、補完候補が表示されます。
  4. 目的の候補を選んだら [Enter] で確定します。

補完対象となるのはカーソルの直前にある一続きのアルファベット等*2です。あらかじめ範囲選択しておくとその部分だけが補完対象となります。

リストボックスの使い方は直感的にわかるでしょう。詳しくは リストボックスの操作 を参照してください。

辞書補完モード

辞書ファイルがある状態で CompleteX.mac を実行すると辞書補完モードになります。辞書ファイルは拡張子ごとに用意し、 拡張子.dic という名前でベースフォルダに置きます。ベースフォルダにある sample.dic を使って試してみましょう。このサンプル辞書は PHP5 の関数名を集めたものです。

  1. sample.dic をコピーし、ファイル名を txt.dic に変更します。
  2. 拡張子 txt の適当なファイルを開きます。
  3. CompleteX.mac に割り当てたキーを押します。あとはさっきと同じです。

ほかの拡張子に対しても同様に辞書ファイルを用意すれば使えます。たとえば拡張子 php のファイルで同じ辞書を使うには、辞書ファイルを php.dic という名前にします。

辞書ファイルは候補を書き並べるだけで簡単に作れます。〈→辞書の作り方

混合補完モード

名前補完モードの候補と辞書補完モードの候補を混ぜることができます。設定ファイル config.txt に次の2行を書き加えます。

config.txt
[default]
source=mix

この設定は拡張子別に行うこともできます。詳しくは設定ファイルの書き方を参照してください。

ファイル名補完

ベースフォルダにある CompletePath.mac を実行します。詳しくは CompletePath.mac を参照してください。

フォント名補完

ベースフォルダにある CompleteFont.mac を実行します。詳しくは CompleteFont.mac を参照してください。


*1
デフォルトでは、候補はディスク上のファイルから収集されるため、未保存の部分にある単語は候補に挙がりません。設定により編集バッファから直接収集するようにもできます。〈→ CompleteWord.mac:設定
*2
アルファベット等 … abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ および設定項目の wordhas= に指定された記号。

辞書ファイルを指定する

任意の名前の辞書ファイルを使うには、設定ファイルに記述を加えます。方法は設定ファイルの書き方を参照してください。辞書ファイルを指定するキーは dic= です。

例: 拡張子 mac に対して辞書ファイル hidemac.dic を指定する場合

config.txt
[.mac]
dic=hidemac.dic

辞書ファイルは次の順序で検索され、最初に見つかったものが使用されます。

  1. 拡張子別の設定
  2. ファイルタイプ別の設定
  3. デフォルトの設定
  4. ベースフォルダ\拡張子.dic

プラグインを使う

プラグインを使うには、入手したプラグイン (.mac ファイル) をベースフォルダに置き、設定ファイルに記述を加えます。方法は設定ファイルの書き方を参照してください。プラグインを指定するキーは plugin= です。

例: 拡張子 htm に対してプラグイン htmltag.mac を指定する場合

config.txt
[.htm]
plugin=htmltag.mac

プラグインは次の順序で検索され、最初に見つかったものが使用されます。プラグインの指定は辞書ファイルの指定より優先されます。

  1. 拡張子別の設定
  2. ファイルタイプ別の設定
  3. デフォルトの設定
  4. ベースフォルダ\拡張子.mac

プラグインは秀丸マクロの知識があれば作れます。〈→プラグインの作り方〉 また、有志の方が作ったプラグインがアップローダにあるかもしれません。

リストボックスの操作

キー操作

デフォルトのキー割り当ては次のとおりです。

キー動作
文字キー文字として入力
Ctrl+文字キー何もしない
Space文字として入力
Enter確定1
Shift+Enter確定2
Ctrl+Enter確定3
Backspace1文字消去
Escキャンセル
Tab補完
前候補
次候補
前ページ
次ページ

確定1, 確定2, 確定3 はどれも同じですが、プラグインによっては確定後の動作が変わる場合があります。

キャンセル は補完開始前の状態に戻ります。ただし 設定 で Appear=listbox としているときはリストボックスが消えるだけです。

自動確定

以下の場合は現在選択中の候補が自動的に確定されます。

一致による自動確定
不一致による自動確定

キーカスタマイズ

CompleteX-Main.mac の冒頭部分を書き換えることで任意のキー割り当てに変更できます。詳しくは試行錯誤してください。

//------ キー割り当て ----------------------------------------------------------
// #F[キー] = 機能コード;
#F[0x020] =   0;	// [Space]          	┌── 機能コード ──┐
#F[0x00D] =   1;	// [Enter]          	│  0: 文字として入力 │
#F[0x008] =  37;	// [Backspace]      	│ -1: キャンセル1    │
#F[0x01B] =  -1;	// [Esc]            	│ -2: キャンセル2    │
#F[0x009] =  32;	// [Tab]            	│ -3: キャンセル3    │
#F[0x01D] =  33;	// [↑]             	│ -4: キャンセル4    │
#F[0x01F] =  34;	// [↓]             	│  1: 確定1          │
#F[0x01C] =  35;	// [←]             	│  2: 確定2          │
#F[0x01E] =  36;	// [→]             	│  3: 確定3          │
// #F[0x120] = ;	// Shift+[Space]    	│  4: 確定4          │
#F[0x10D] =   2;	// Shift+[Enter]    	│ 32: 補完           │
// #F[0x108] = ;	// Shift+[Backspace]	│ 33: 前候補         │
// #F[0x11B] = ;	// Shift+[Esc]      	│ 34: 次候補         │
// #F[0x109] = ;	// Shift+[Tab]      	│ 35: 前ページ       │
// #F[0x11D] = ;	// Shift+[↑]       	│ 36: 次ページ       │
// #F[0x11F] = ;	// Shift+[↓]       	│ 37: 1文字消去      │
#F[0x11C] =  37;	// Shift+[←]       	│ 38: 1文字確定      │
#F[0x11E] =  38;	// Shift+[→]       	│ 99: 何もしない     │
// #F[0x220] = ;	// Ctrl+[Space]     	└──────────┘
#F[0x20A] =   3;	// Ctrl+[Enter]
// #F[0x27F] = ;	// Ctrl+[Backspace]
#F[0x21D] =  35;	// Ctrl+[↑]
#F[0x21F] =  36;	// Ctrl+[↓]
// #F[0x21C] = ;	// Ctrl+[←]
// #F[0x21E] = ;	// Ctrl+[→]
// #F[0x31D] = ;	// Shift+Ctrl+[↑]
// #F[0x31F] = ;	// Shift+Ctrl+[↓]
// #F[0x31C] = ;	// Shift+Ctrl+[←]
// #F[0x31E] = ;	// Shift+Ctrl+[→]
// #F[0x1C0 + 'A'] = ;	// Ctrl+[ A ]
//             :      	//        :
// #F[0x1C0 + 'Z'] = ;	// Ctrl+[ Z ]
// #F[0x2C0 + 'A'] = ;	// Shift+Ctrl+[ A ]
//             :      	//              :
// #F[0x2C0 + 'Z'] = ;	// Shift+Ctrl+[ Z ]

設定ファイルの書き方

設定ファイルはベースフォルダにある config.txt という名前のテキストファイルです。サンプルとして sample-config.txt が同梱されています。

設定ファイルはいくつかのセクションからなり、それぞれのセクションに キー=値 の形で設定内容を書きます。

[セクション]
キー=値
…

設定は

  1. 拡張子別の設定
  2. ファイルタイプ別の設定
  3. デフォルトの設定

の順に検索され、最初に見つかったものが適用されます。見つからない場合は何も設定されていないものと見なされます。

拡張子別の設定

特定の拡張子に対する設定はピリオドで始まる拡張子のセクションに書きます。

例: 拡張子 mac に対して辞書ファイル hidemac.dic を指定する場合

[.mac]
dic=hidemac.dic

値にファイル名を指定するときは、フルパスまたはベースフォルダからの相対パスで書きます。〈→ファイル名の指定方法

ファイルタイプ別の設定

複数の拡張子に対する設定を1か所にまとめて書くことができます。

  1. それらの拡張子を総称するファイルタイプ名を決めます。予約セクション名以外なら好きな名前を付けられます。
  2. ファイルタイプのセクションに設定内容を書きます。
  3. それぞれの拡張子のセクションに @=ファイルタイプ と書きます。

例: 拡張子 htm, html のファイルタイプを htmlfile とし、辞書ファイル html401.dic を指定する場合

[htmlfile]
dic=html401.dic

[.htm]
@=htmlfile

[.html]
@=htmlfile

@= は「値が設定されてなかったら他のセクションを参照せよ」という意味です。 @= があるからといって、そのセクションの他のキーが無効になるわけではありません。〈→参照記法

デフォルトの設定

以上で定義されていない拡張子に対するデフォルトの設定は default セクションに書きます。

例: 未定義の拡張子に対して辞書ファイル common.dic を指定する場合

[default]
dic=common.dic

デフォルトの設定で辞書ファイルを指定すると、ベースフォルダに 拡張子.dic を置いても使用されなくなります。

ファイル名の指定方法

辞書ファイルやプラグインなどのファイル名を指定する場合、値にファイル名だけを書くとそのファイルはベースフォルダにあるものと見なされます。ベースフォルダ以外にあるファイルは、ベースフォルダからの相対パス、フルパス、 UNC パスのいずれかで指定します。

例: ベースフォルダ\hoge\fuga.dic を指定する方法

dic=hoge\fuga.dic                                                     … 相対パス
dic=C:\Program Files\Hidemaru\Macro\CompleteX\hoge\fuga.dic           … フルパス
dic=\\Computer\C\Program Files\Hidemaru\Macro\CompleteX\hoge\fuga.dic … UNC パス

予約セクション名

以下のセクション名は予約されています。他の目的には使えません。

[default]   … デフォルトの設定
[turukame]  … 秀丸メールに対する設定
[new]       … 新規文書に対する設定
[grep]      … grep 結果ウィンドウに対する設定
[exeresult] … 実行結果ウィンドウに対する設定
[webbrowse] … Web ブラウズモードに対する設定
[plugin]    … プラグインから起動されたときの設定

設定項目

設定ファイルに記述できる項目は以下のとおりです。設定ファイルの記述方法は設定ファイルの書き方を参照してください。

基本設定

source
補完モードを指定します。 (デフォルト = auto)
source=mix     … 混合補完モードになります。
source=dic     … 辞書補完モードになります。
source=self    … 名前補完モードになります。
source=path    … ファイル名補完モードになります。
source=font    … フォント名補完モードになります。
source=auto    … 辞書ファイルの有無によって辞書補完モードと名前補完モードが自動的に切り替わります。
source=builtin … 辞書ファイルがないとき、名前補完モードの代わりに秀丸内蔵の単語補完機能が呼び出されます。
mix, builtin 以外はユーザーが明示的に指定する必要はないと思います。
dic
辞書ファイルを指定します。
dic=filename
hint
ヒントファイルを指定します。
hint=filename
plugin
プラグインを指定します。
plugin=filename

動作設定

autofix
自動補完を行うタイミングを指定します。2進数3桁で、それぞれ最初、途中、最後に自動補完を行うかどうかを指定します。 (デフォルト = 000)
autofix=111 … 最初、途中、最後に自動補完を行います。
autofix=101 … 最初と最後に自動補完を行います。
autofix=100 … 最初に自動補完を行います。
autofix=001 … 最後に自動補完を行います。
autofix=000 … 自動補完を行いません。
autosave
名前補完モードなどでディスク上のファイルから候補を収集する前に、現在編集中のファイルを自動的に上書き保存します。 (デフォルト = no)
autosave=yes
overwrite
単語の途中にカーソルを置いて実行したとき、カーソルより右の部分を上書きします。 (デフォルト = no)
overwrite=yes

辞書設定

casesense
大文字小文字を区別します。 (デフォルト = no)
casesense=yes
候補の絞り込み表示を行わない場合は効果がありません (大文字小文字は区別されないように見えます)。ファイル名補完モードでは大文字小文字は区別されません。
unsorted
ソートされていない辞書ファイルを利用します。 (デフォルト = no)
unsorted=yes       … 内部でソートします。
unsorted=overlap   … 内部でソートし、重複候補を取り除きます (正規化)。
unsorted はプラグインが作るテンポラリ辞書のための機能です。ユーザーが作る辞書ファイルは後述の方法で正規化してください。〈→辞書の作り方
wordhas
補完候補に記号 (アルファベット・数字・アンダーバー以外の ASCII 文字) が含まれる場合、その記号を列記します。
wordhas=@#$%&...
この設定は補完対象文字列の取得と不一致による自動確定の動作に影響します。

表示設定

appear
表示形式を指定します。 (デフォルト = both)
appear=listbox … 候補がリストボックスにのみ表示されます。 (Visual Studio 風)
appear=both    … 候補がカーソル位置とリストボックスの両方に表示されます。
appear=inline  … 候補がカーソル位置にのみ表示されます。 (インライン補完風)
appear=listbox appear=both appear=inline
リストボックスのみ表示 両方に表示 カーソル位置のみ表示
filter
候補の絞り込み表示を行います。 (デフォルト = yes)
filter=no
rows
リストボックスの行数を指定します。 (デフォルト = 8)
rows=10
width
リストボックスの幅をピクセル単位で指定します。 (デフォルト = 200)
width=300

参照記法

@
デフォルト値として他のセクションを参照します。他のセクションの設定をオーバーライドし、差分だけを書くことができます。
[htmlfile]
source=mix
dic=html401.dic

[.html]
@=htmlfile
dic=html401_with_ssi.dic

この例だと拡張子 .html に対し source=mix dic=html401_with_ssi.dic が設定されます。参照できるのは同じ設定ファイル内にあるセクションだけです。設定を誤ると無限ループします。

辞書の作り方

CompleteX の辞書ファイルとヒントファイルは行指向のテキストファイルです。アーカイブに入っている sample.dic と sample.hint を参考にしてください。

辞書ファイル

正規化

辞書ファイルは正規化されていなければなりません。正規化とはファイル内容を行ごとにソートし重複行を除去することです。辞書ファイルの正規化は次の方法で行います。

  1. 正規化したい辞書ファイルを秀丸エディタで開きます。
  2. ベースフォルダ\system\sortdic.mac を実行します。

Windows の sort コマンドとは結果が異なります。必ず上記の方法を使ってください。

ヒントファイル

プラグインの作り方

他の秀丸マクロから CompleteX の補完機能を利用することができます。また、そのマクロを CompleteX から起動することもできます。このようなマクロをプラグインと呼びます。アーカイブに入っている sample-plugin.mac を参考にしてください。

処理の流れ

CompleteX は複数のマクロが連係して動作するように設計されています。ファイル構成を思い出してください。

マクロフォルダ\
│□CompleteX.mac         … 起動マクロ
│
└■CompleteX\            … ベースフォルダ
 │□CompleteX-Main.mac  … 本体マクロ
 │□config.txt          … 設定ファイル
 │□プラグイン
 │
 └■system
   □listbox.mac       … リストボックス
   □listbox.param     … パラメータファイル

これらのマクロ群は次の順序で実行されていきます。

処理の流れ
  1. ユーザーは CompleteX.mac を起動します。 (フローチャートには描いてない)
  2. CompleteX.mac は CompleteX-Main.mac を起動します。
  3. CompleteX-Main.mac は設定ファイルを見て、指定されたプラグインを起動します。
  4. プラグインは必要な前処理を行い、 listbox.mac を起動します。
  5. listbox.mac はパラメータファイルで指定された候補をユーザーに選択させ、確定文字列を書き込んで終了します。
  6. プラグインは必要な後処理を行い、終了します。
  7. CompleteX-Main.mac はそのまま終了します。

リストボックスの使い方

プラグインは内部でリストボックス listbox.mac を呼び出します。機能分担を階層的に描くと下図のようになります。 listbox.mac はパラメータファイル listbox.param を介して上位層との間で情報をやりとりします。ここでは listbox.mac のインターフェイスを規定します。

階層構造

下は単純なプラグインの例です。

プラグイン.mac
$CfgFile = currentmacrodirectory + "\\config.txt";

// 引数の設定
$$prmfile = currentmacrodirectory + "\\system\\listbox.param";
writeinistr $$prmfile, "Parameter", "cfgfile",  $CfgFile;           // (1)
writeinistr $$prmfile, "Parameter", "source",   "list";             // (2)
writeinistr $$prmfile, "Parameter", "list",     "hoge,fuga,piyo";
writeinistr $$prmfile, "Parameter", "hints",    "ほげ,ふが,ぴよ";
writeinistr $$prmfile, "Parameter", "unsorted", "overlap";          // (3)

// リストボックス起動
execmacro currentmacrodirectory + "\\system\\listbox.mac";          // (4)

// 結果の取得
#result  = getininum($$prmfile, "Return", "result");                // (5)
$instr   = getinistr($$prmfile, "Return", "instr");                 // (6)
$basestr = getinistr($$prmfile, "Return", "basestr");               // (7)

// 後始末
if (#result == 9 || #result == 13 || #result >= 32) {
    insert char(#result);                                           // (8)
}

引数の設定

リストボックスに渡す引数はパラメータファイル listbox.param の Parameter セクションに書き込みます。

cfgfile
設定ファイルのパスを指定します(1)。 listbox.mac はここで指定された設定ファイルを読みに行きます。
source, dic, hint, list, hints
ソースを指定します(2)。辞書ファイルを使うか候補リストを使うかで、次のどちらかのパターンになります。*1
辞書ファイルを使う場合
writeinistr $$prmfile, "Parameter", "source",   "dic";
writeinistr $$prmfile, "Parameter", "dic",      $dicfile;           // 辞書ファイル名
writeinistr $$prmfile, "Parameter", "hint",     $hintfile;          // ヒントファイル名
プラグイン側で辞書ファイルを作る場合、 ~tmp.dic というファイル名は避けてください。本体が利用するテンポラリ辞書ファイル名と衝突するためです。
候補リストを使う場合
writeinistr $$prmfile, "Parameter", "source",   "list";
writeinistr $$prmfile, "Parameter", "list",     "hoge,fuga,piyo";   // 候補リスト
writeinistr $$prmfile, "Parameter", "hints",    "ほげ,ふが,ぴよ";   // ヒントリスト
リストはカンマ区切り文字列です。ヒントリストはヒントファイルと同様、リストボックスの下に表示される内容をカンマ区切り文字列で指定します。

必要に応じてその他の設定を追加します(3)。書ける内容は設定ファイルと同じです。〈→設定項目〉 設定ファイルに書かれた設定よりもパラメータファイルに書かれた設定の方が優先されます。

特に指定しない限り、補完対象となるのはカーソルの直前にある一続きのアルファベット等です。補完対象を特に指定したい場合は次のようにします。

instr
初期文字列を指定します。
moveto #x1, #y1;  beginsel;  moveto #x2, #y2;  endsel;      // 削除する範囲を選択
writeinistr $$prmfile, "Parameter", "instr", "xyz";         // 初期文字列
この例だとリストボックス起動時に (#x1, #y1) - (#x2, #y2) の範囲が削除され、 (#x1, #y1) にカーソルが置かれ、 xyz が入力された状態になります。

リストボックス起動

listbox.mac を起動します(4)。確定文字列が insert された状態で返ってきます。不一致による自動確定で最後に入力された文字は insert されていません。

結果の取得

結果はパラメータファイル listbox.param の Return セクションに書き込まれています。

result
返り値を取得します(5)。返り値の意味は次のとおりです。
result=-1 … キャンセル (Esc)
result=0  … 一致による自動確定
result=1  … 確定1 (Enter)
result=2  … 確定2 (Shift+Enter)
result=3  … 確定3 (Ctrl+Enter)
result=35 … 不一致による自動確定 値は最後に入力された文字コード (9, 13, 32〜126)
instr
確定文字列を取得します(6)。この例では使いませんが、複雑なプラグインを作るときはきっと使いたくなります。
basestr
初期文字列を取得します(7)。この例では使いませんが、キャンセル時にアンドゥしてよいかどうかの判定で必要になります。

後始末

不一致による自動確定で最後に入力された文字を書き込みます(8)。

プラグイン内で DLL をロードした場合、そのプラグインが責任をもって解放してください。逆に、プラグインが起動された時点ですでに DLL がロードされていた場合、その DLL を勝手に解放してはいけません。


*1
名前補完モードを使いたいときはプラグインの連鎖 (後述) により子プラグインとして CompleteWord.mac を起動します。

プラグインの連鎖

プラグインから他のプラグインを呼び出すこともできます。これを「プラグインの連鎖」と呼ぶことにします。たとえば2つのプラグインを連鎖させると全体の構造は下図のようになります。親プラグインと子プラグインの間では設定ファイル config.txt を介して情報をやりとりします (listbox.param ではありません)。ここではプラグイン同士のインターフェイスを規定します。

階層構造

前節で説明した単純なプラグインとの違いは次の2点です。

下は親プラグインの例です。親として他のプラグインを呼び出すと同時に、自分が子となって他のプラグインから呼び出されることも考慮しています。 (1), (2), (7), (8) が子プラグインとして必要な対上位インターフェイス、 (3) 〜 (6) が親プラグインとして必要な対下位インターフェイスです。

$CfgFile = currentmacrodirectory + "\\config.txt";

// ファイルタイプ決定
if (getinistr($CfgFile, "plugin", "type") == "plugin") {
    $Type = "plugin";                                               // (1) 対上位
} else {
    $Type = filetype;                                               // (2)
}

// 引数の設定
writeinistr $CfgFile, "plugin", "type", "plugin";                   // (3) 対下位
writeinistr $CfgFile, "plugin", "@", filetype;                      // (4) 対下位

// 子プラグイン起動
if ($Type != "plugin") begingroupundo;
execmacro currentmacrodirectory + "\\子プラグイン.mac";             // (5) 対下位
if ($Type != "plugin") endgroupundo;

// 結果の取得
#result  = getininum($CfgFile, "plugin", "result");                 // (6) 対下位
$instr   = getinistr($CfgFile, "plugin", "instr");
$basestr = getinistr($CfgFile, "plugin", "basestr");

// 後始末
if ($Type == "plugin") {
    writeinistr $CfgFile, "plugin", 0, 0;                           // (7) 対上位
    writeinistr $CfgFile, "plugin", "basestr", "\"" + $basestr + "\"";
    writeinistr $CfgFile, "plugin", "instr",   "\"" + $instr + "\"";
    writeininum $CfgFile, "plugin", "result",  #result;
} else if (#result == 9 || #result == 13 || #result >= 32) {
    insert char(#result);                                           // (8)
} else if (#result <= -1 && $instr == $basestr) {
    undo;                                                           // (9)
}

最下位の (自分で listbox.mac を呼び出す) 子プラグインを作るときは、対下位インターフェイスを listbox.mac のもの〈→前節〉に差し替えればいいです。具体例はアーカイブに入っている sample-plugin.mac を見てください。

実際にプラグインを作るときは、最上位のプラグインを作っているつもりでも対上位インターフェイスを持たせておいたほうがいいです。他のプラグインからその機能を使いたいと思ったとき子プラグインとして呼び出すことができ、車輪の再発明を避けられます。

ファイルタイプ決定

最初に設定ファイル config.txt の plugin セクションの type キーの値を見てください。この値が plugin だった場合、自分は他のプラグインから呼び出されたので、ファイルタイプは "plugin" とします(1)。それ以外の場合、自分は最上位のプラグインなので、ファイルタイプは filetype キーワードの値とします(2)。*1

type
プラグインの連鎖の有無を示します。
[plugin]
type=plugin … 連鎖している → ファイルタイプは "plugin"
type=       … 連鎖してない → ファイルタイプは filetype

引数の設定〜子プラグイン起動〜結果の取得

親プラグインは config.txt の plugin セクションの type キーに plugin という値を書き込みます(3)。

必要に応じてその他の設定を plugin セクションに追加します(4)。内容はユーザーが設定ファイルに書くものと同じです。〈→設定項目

設定が済んだら子プラグインを起動します(5)。確定文字列が insert された状態で返ってきます。不一致による自動確定で最後に入力された文字は insert されていません。

親プラグインは config.txt の plugin セクションから子プラグインの実行結果を取得します(6)。内容は listbox.mac の返り値と同じです。

後始末

自分が他のプラグインから呼び出されていた場合、呼び出し元に結果を返します(7)。最後に入力された文字を書き込むのは最上位のプラグインの役目なので、自分が書き込んではいけません。

自分が最上位のプラグインだった場合、不一致による自動確定で最後に入力された文字を書き込みます(8)。キャンセルされた場合はアンドゥすることもできます(9)。

プラグイン内で DLL をロードした場合、そのプラグインが責任をもって解放してください。逆に、プラグインが起動された時点ですでに DLL がロードされていた場合、その DLL を勝手に解放してはいけません。


*1
秀丸メールにも対応するなら、秀丸メール上で実行されたらファイルタイプを "turukame" とします。判定方法は CompleteX-Main.mac の GetType サブルーチンを参考にしてください。

マクロ作者の方へ

Q&A

秀丸メール/新規文書/grep 結果/実行結果/Web ブラウズモードのウィンドウで使うには?

設定ファイルに書ける特殊なセクションとして次のものがあります。これらのセクションに設定を記述してください。

[turukame]      … 秀丸メールに対する設定
[new]           … 新規文書に対する設定
[grep]          … grep 結果ウィンドウに対する設定
[exeresult]     … 実行結果ウィンドウに対する設定
[webbrowse]     … Web ブラウズモードに対する設定

ベースフォルダに turukame.dic, new.dic, grep.dic, exeresult.dic, webbrowse.dic を置いて使うこともできます。

「メモリが足りないので処理を中止します。」というエラーが出る/設定内容が有効にならない/なぜか名前補完モードになる

config.txt を排他的に開いたまま実行していませんか。 config.txt を閉じるか、ファイルの排他制御を無効にしてください。

設定ファイル名はなぜ config.ini じゃなくて config.txt なの?

一部のアンチウィルスソフトを使っている環境で、拡張子が .ini のファイルへの書き込みが極端に遅くなるという噂を聞いたからです。ほんまかいな。

まだわかんないことがあるんだけど。

談話室へお越しください。