CompleteX リファレンス

Version 2.48 (2005/11/13)

これは旧バージョンのドキュメントです。開発は CompleteX v3 に引き継がれました。

目次

凡例

無印
共通の説明
[CompleteX.mac]
CompleteX.mac に関する説明
[CompleteWord.mac]
CompleteWord.mac に関する説明
[CompletePath.mac]
CompletePath.mac に関する説明
[CompleteFont.mac]
CompleteFont.mac に関する説明

使い方

使ってみよう

名前補完モード [CompleteX.mac][CompleteWord.mac]

CompleteWord.mac を実行するか、何も設定してない状態で CompleteX.mac を実行すると名前補完モードになります。名前補完モードでは現在編集中のファイル内にある単語が候補に挙がります(未保存の部分は挙がりません)。やってみましょう。

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

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

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

辞書補完モード [CompleteX.mac]

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

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

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

辞書ファイルは候補を書き並べるだけで簡単に作れます。〈→辞書の作り方〉 また、有志の方が作った辞書ファイルがアップローダにあるかもしれません。他の補完マクロ向けに作られた辞書ファイルを使うには互換性の項を参照してください。

混合補完モード [CompleteX.mac]

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

config.txt
[default]
source=mix

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

ファイル名補完モード [CompletePath.mac]

CompletePath.mac を実行するとファイル名補完モードになります。やってみましょう。

  1. 秀丸で適当なファイルを開きます。
  2. CompletePath.mac に割り当てたキーを押します。あとは CompleteX.mac と同じです。
  3. フォルダ名を選択して確定すると次の階層へ移ります。フォルダ名で止めたいときは無選択状態で [Enter] を押します。

絶対パスおよび現在編集中のファイルから見た相対パスが入力できます。

補完対象となるのはカーソルの直前にあるパス文字列*2です。記号や全角文字が含まれていて取得できないときはあらかじめ範囲選択してから実行します。

フォント名補完モード [CompleteFont.mac]

CompleteFont.mac を実行するとフォント名補完モードになります。やってみましょう。

  1. 秀丸で適当なファイルを開きます。
  2. CompleteFont.mac に割り当てたキーを押します。あとは CompleteX.mac と同じです。

補完対象となるのはカーソルの直前にある一続きのアルファベット等(ハイフンも可)です。フォント名がスペースや全角文字を含んでいて取得できないときはあらかじめ範囲選択してから実行します。


*1
アルファベット等 … abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ およびオプション設定の WithinWord で指定された記号。
*2
パス文字列 … abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789._-+~$% およびディレクトリ区切り文字(\ または /)、ドライブ区切り文字(:)で構成された文字列。

辞書ファイルを指定する [CompleteX.mac]

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

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

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

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

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

いくつかの辞書ファイルを併合して使うこともできます。〈→複数辞書ファイルの利用

プラグインを使う [CompleteX.mac]

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

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

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

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

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

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

リストボックスの操作

キー操作

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

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

補完 は現在の入力から一意に定まる部分を確定します。2回以上押しても何も起こりません。 カスタマイズして 補完/次候補 に割り当てると3回目以降で次候補へ行くようになります。

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

自動確定

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

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

キーカスタマイズ

CompleteX-Main.mac の冒頭部分を書き換えることで任意のキー割り当てに変更できます。

//------ キー割り当て ------------------------------------------------------
                                    	// ┌── 機能コード ──┐
// ##Func[文字コード] = 機能コード; 	// │ -1: 何もしない     │
##Func[32] =  0;  // [Space]        	// │  0: 文字として入力 │
##Func[ 9] =  6;  // [Tab]          	// │  2: 前候補         │
##Func[ 8] =  4;  // [Backspace]    	// │  3: 次候補         │
##Func[27] =  9;  // [Esc]          	// │  4: 1文字消去      │
##Func[13] = 10;  // [Enter]        	// │  5: 1文字確定      │
##Func[29] =  2;  // [↑]           	// │  6: 補完           │
##Func[31] =  3;  // [↓]           	// │  7: 補完/次候補   │
##Func[28] =  4;  // [←]           	// │  9: キャンセル     │
##Func[30] =  5;  // [→]           	// │ 10: 確定           │
                                    	// └──────────┘
// ##Func['大文字'-64] = 機能コード; で Ctrl+文字キー も指定可。たとえば
// ##Func['P'-64] = 2; だと Ctrl+P が前候補になる。
//--------------------------------------------------------------------------

前候補次候補補完/次候補は Shift を押しながらだと逆向きになります。

設定ファイルの書き方

設定ファイルはベースフォルダにある 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 を置いても使用されなくなります。

ファイル名の指定方法

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

のいずれかで指定します。

例: ベースフォルダ\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]       … デフォルトの設定
[new]           … 新規文書に対する設定
[grep]          … grep 結果ウィンドウに対する設定
[exeresult]     … 実行結果ウィンドウに対する設定
[turukame]      … 秀丸メールに対する設定
[plugin]        … プラグインから起動されたときの設定

オプション設定

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

動作オプション

source [CompleteX.mac]
補完モードを指定します。(デフォルト = 辞書ファイルの有無によって辞書補完モードと名前補完モードが自動的に切り替わります)
source=mix  …混合補完モードになります。
source=self …名前補完モードになります。
source=path …ファイル名補完モードになります。
source=font …フォント名補完モードになります。
dic [CompleteX.mac]
辞書ファイルを指定します。
dic=filename
dic2, dic3, ... [CompleteX.mac]
複数の辞書ファイルを指定します。〈→複数辞書ファイルの利用
dic=filename
dic2=filename
dic3=filename
; 以下同様
dicdic1 と書くこともできます(が、推奨しません)。両方書いた場合は dic1 が優先されます。
plugin [CompleteX.mac]
プラグインを指定します。
plugin=filename
AutoSave [CompleteX.mac][CompleteWord.mac]
名前補完モードで、ファイルを自動的に上書き保存してから起動します。(デフォルト = no)
AutoSave=yes
名前補完モードは保存されたファイルから候補を探すため、未保存の部分は候補に挙がりません。
Overwrite
単語の途中にカーソルを置いて実行したとき、カーソルより右の部分を上書きします。(デフォルト = no)
Overwrite=yes

辞書オプション

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

リストボックスのオプション

AutoFix
自動補完を行うタイミングを指定します。(デフォルト = 自動補完は行いません)
                      最初  途中  最後
AutoFix=first      …   ○    ―    ―
AutoFix=first,last …   ○    ―    ○
AutoFix=last       …   ―    ―    ○
AutoFix=always     …   ○    ○    ○
Appear
表示形式を指定します。(デフォルト = カーソル位置とリストボックスの両方に表示されます)
Appear=listbox …候補がリストボックスにのみ表示されます。(Visual Studio 風)
Appear=inline  …候補がカーソル位置にのみ表示されます。(インライン補完風)
Filter
候補の絞り込み表示を行います。(デフォルト = yes)
Filter=no
Width
リストボックスの幅をピクセル単位で指定します。(デフォルト = 200)
Width=300
Rows
リストボックスの行数を指定します。(デフォルト = 8)
Rows=10

ファイル名補完モードのオプション [CompletePath.mac]

path.ShowHidden
隠しファイルも候補に挙げるかどうか指定します。(デフォルト = no)
path.ShowHidden=yes …隠しファイルも候補に挙がります。
path.ShowHidden=no  …隠しファイルは候補に挙がりません。
path.FileSystem
ディレクトリ区切り文字を指定します。(デフォルト = DOS)
path.FileSystem=Unix …ディレクトリ区切り文字が / になります。
path.FileSystem=DOS  …ディレクトリ区切り文字は \ です。
path.CaseChange
大文字小文字変換を指定します。(デフォルト = なし)
path.CaseChange=Lower …小文字に変換されます。
path.CaseChange=Upper …大文字に変換されます。
path.Filter
候補に挙がるファイル名をワイルドカードで指定します。セミコロン区切りで複数指定できます。(デフォルト = *)
path.Filter=*.jpg;*.png;*.gif

辞書の作り方 [CompleteX.mac]

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

書式

正規化

正規化とはファイル内容を行ごとにソートし重複行を除去することです。辞書ファイルの正規化は次の方法で行います。 Windows の sort コマンドとは結果が異なりますので、必ず次の方法を使ってください。

  1. その辞書を利用するよう設定します。
  2. 設定ファイルを開き、その辞書を利用する拡張子のセクションに Unsorted=writeback という行を書き加えます。
    config.txt
    [.txt]
    dic=sample.dic
    Unsorted=writeback
    
  3. CompleteX を起動します。辞書ファイルの内容が正規化され、元の辞書ファイルに書き戻されます。

複数辞書ファイルの利用

複数の辞書ファイルを自動的にマージして利用できます。次のように設定します。

config.txt
[.txt]
dic=hoge.dic
dic2=fuga.dic
dic3=piyo.dic

互換性

他の秀丸用補完マクロで使われている辞書ファイルも調べてみました。 (2005/08/09 現在)

マクロ名 作者 辞書形式 ソート CompleteX で使うには
祝鳥(のりてふ) 阿部 紀行 さん 1行1語 そのまま使えます。
LF-Supplement 小森 裕介 さん 1行1語 × *1 そのまま使えます。*2
文字列補給
Flashback
slide_moon さん 1行1語 × *1 そのまま使えます。
単語補完マクロ 今地 一輝 さん 1行1語 × *1 コメントと空行を取り除きます。*3
kbCodeHelper.mac kotobuki-chive さん INI ファイル どうにかして単語部分を取り出します。
HoTeX Gimite 市川 さん INI ファイル × どうにかして単語部分を取り出します。
SUPER TeX 乙部 厳己 さん INI ファイル × どうにかして単語部分を取り出します。*4

ソートされていない辞書は正規化してください。〈→正規化〉 オプション設定Unsorted=yes としてもいいですが、重くなるのでお勧めできません。

候補に記号が含まれるときはオプション設定WithinWord に追加します。


*1
学習機能により順序が入れ替わります。
*2
コメント行が邪魔になるときは取り除きます。
*3
「単語補完マクロ」は入力単語を別の単語に置換することができますが、 CompleteX ではできません。(そのようなプラグインを作ることはできます)
*4
おばけ さんちの 補完系マクロ辞書ライブラリ に変換マクロがあるかも。

プラグインの作り方 [CompleteX.mac]

他の秀丸マクロから CompleteX の補完機能を利用することができます。また、そのマクロを CompleteX から起動することもできます。このようなマクロをプラグインと呼びます。

処理の流れ

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

CompleteX-Main.mac が同時に2つ実行されることに注意してください。1つめ (Active) は設定ファイルを見て拡張子別に処理を分岐するだけの、単なるランチャーとして働きます。2つめ (Passive) は補完動作を実行し、結果をプラグインに返します。プラグインと本体は設定ファイルを介して情報をやりとりします。

仕様

次のマクロは簡単なプラグインの例です。順を追って説明します。

sample-plugin.mac
$BaseDir = currentmacrodirectory + "\\";
$IniFile = $BaseDir + "config.txt";

writeinistr $IniFile, "plugin", "type", "plugin";           // 1.
writeinistr $IniFile, "plugin", "source", "list";           // 2.
writeinistr $IniFile, "plugin", "list", "fuga,hoge,piyo";   // 3.
writeinistr $IniFile, "plugin", "@", filetype;              // 4.

// 5.

execmacro $BaseDir + "CompleteX-Main.mac";                  // 6.

#result = getininum($IniFile, "plugin", "result");          // 7.
$instr  = getinistr($IniFile, "plugin", "instr");
writeinistr $IniFile, "plugin", 0, 0;                       // 8.
  1. プラグインは設定ファイルの plugin セクションの type キーに plugin という値を書き込みます。本体はこの値を見てプラグインから起動されたことを知ります。*1
  2. 補完モードを指定します。
    [plugin]
    source=dic  …辞書補完モードになります。
    source=mix  …混合補完モードになります。
    source=self …名前補完モードになります。
    source=path …ファイル名補完モードになります。
    source=font …フォント名補完モードになります。
    source=auto …辞書ファイルの有無によって辞書補完モードと名前補完モードが自動的に切り替わります。
    source=list …候補リストを指定します。
    
  3. 辞書ファイルまたは候補リストを指定します。 source=list のときは list= が、それ以外のときは dic= が有効です。*2
    [plugin]
    dic=~tmp2.dic       …辞書ファイルを指定します。
    list=hoge,fuga,piyo …候補リストをカンマ区切りで指定します。
    
  4. 必要に応じてその他のオプションを設定します。設定項目は オプション設定 と同じです。拡張子別の設定を適用させるには @ キーに filetype を書き込みます。
  5. 補完対象文字列を明示する必要があるときはここで範囲選択します。通常の動作(カーソル左の単語を補完対象とする)でよければ何もしなくていいです。
  6. 本体を実行します。確定文字列が insert された状態で返ってきます。
  7. 設定ファイルの plugin セクションの result キーに返り値が、 instr キーに確定文字列が書き込まれています。*3
    [plugin]
    result=-1 …キャンセル( [Esc] を押した)
    result=0  …一致による自動確定
    result=1  …手動確定( [Enter] を押した)
    result=35 …不一致による自動確定 値は最後に入力された文字コード(32〜126)
    
    instr=InsertedString …確定文字列
    
  8. 最後に設定ファイルの plugin セクションを消去します。

*1
これを忘れると execmacro の無限ループに陥り、「メモリが足りないので処理を中止します。」というエラーが出ます。
*2
プラグイン側で辞書ファイルを作る場合、 ~tmp.dic というファイル名は避けてください。本体が利用するテンポラリ辞書ファイル名と衝突するためです。
*3
この時点で plugin セクションの他のキーは消去されています。設定ファイルに書き込んだ値を後で使いたいときは変数に保持するなどしてください。

マクロ作者の方へ

プラグインを作るとき、私の書いたコードの一部を流用するのは OK です。許可は要りません。

自作マクロに補完エンジンとして CompleteX 本体を組み込むことができます。同梱配布も OK です。詳しくは談話室で相談に乗ります。

Q&A

混合補完モードの指定を打ち消すには? [CompleteX.mac]

source=auto と書いてください。たとえば次のようにすると「デフォルトは混合補完モード、ただし拡張子 java に限り辞書補完モード」という指定ができます。

config.txt
[default]
source=mix

[.java]
source=auto
dic=java2se.dic

秀丸メール/新規文書/ grep 結果/実行結果のウィンドウで使うには? [CompleteX.mac][CompletePath.mac]

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

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

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

なお、これらのウィンドウでは名前補完モードは使えません。(それを可能にするプラグインを作ることはできます)

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

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

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

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