これは旧バージョンのドキュメントです。開発は CompleteX v3 に引き継がれました。
CompleteWord.mac を実行するか、何も設定してない状態で CompleteX.mac を実行すると名前補完モードになります。名前補完モードでは現在編集中のファイル内にある単語が候補に挙がります(未保存の部分は挙がりません)。やってみましょう。
補完対象となるのはカーソルの直前にある一続きのアルファベット等*1です。あらかじめ範囲選択しておくとその部分だけが補完対象となります。
リストボックスの使い方は直感的にわかるでしょう。詳しくは リストボックスの操作 を参照してください。
辞書ファイルがある状態で CompleteX.mac を実行すると辞書補完モードになります。辞書ファイルは拡張子ごとに用意し、 拡張子.dic という名前でベースフォルダに置きます。ベースフォルダにある sample.dic を使って試してみましょう。このサンプル辞書は PHP5 の関数名を集めたものです。
ほかの拡張子に対しても同様に辞書ファイルを用意すれば使えます。たとえば拡張子 php のファイルで同じ辞書を使うには、辞書ファイルを php.dic という名前でコピーします。
辞書ファイルは候補を書き並べるだけで簡単に作れます。〈→辞書の作り方〉 また、有志の方が作った辞書ファイルがアップローダにあるかもしれません。他の補完マクロ向けに作られた辞書ファイルを使うには互換性の項を参照してください。
名前補完モードの候補と辞書補完モードの候補を混ぜることができます。設定ファイル config.txt に次の2行を書き加えます。
[default] source=mix
この設定は拡張子別に行うこともできます。詳しくは設定ファイルの書き方を参照してください。
CompletePath.mac を実行するとファイル名補完モードになります。やってみましょう。
絶対パスおよび現在編集中のファイルから見た相対パスが入力できます。
補完対象となるのはカーソルの直前にあるパス文字列*2です。記号や全角文字が含まれていて取得できないときはあらかじめ範囲選択してから実行します。
CompleteFont.mac を実行するとフォント名補完モードになります。やってみましょう。
補完対象となるのはカーソルの直前にある一続きのアルファベット等(ハイフンも可)です。フォント名がスペースや全角文字を含んでいて取得できないときはあらかじめ範囲選択してから実行します。
任意の名前の辞書ファイルを使うには、設定ファイルに記述を加えます。方法は設定ファイルの書き方を参照してください。辞書ファイルを指定するキーは dic
です。
例: 拡張子 mac に対して辞書ファイル hidemac.dic を指定する場合
[.mac] dic=hidemac.dic
辞書ファイルは次の順序で検索され、最初に見つかったものが使用されます。
いくつかの辞書ファイルを併合して使うこともできます。〈→複数辞書ファイルの利用〉
プラグインを使うには、入手したプラグイン(.mac ファイル)をベースフォルダに置き、設定ファイルに記述を加えます。方法は設定ファイルの書き方を参照してください。プラグインを指定するキーは plugin
です。
例: 拡張子 htm に対してプラグイン htmltag.mac を指定する場合
[.htm] plugin=htmltag.mac
プラグインは次の順序で検索され、最初に見つかったものが使用されます。プラグインの指定は辞書ファイルの指定より優先されます。
プラグインは秀丸マクロの知識があれば作れます。〈→プラグインの作り方〉 また、有志の方が作ったプラグインがアップローダにあるかもしれません。
デフォルトのキー割り当ては次のとおりです。
キー | 動作 |
---|---|
文字キー | 文字として入力 |
Ctrl+文字キー | 何もしない |
Space | 文字として入力 |
Tab | 補完 |
Backspace | 1文字消去 |
Esc | キャンセル |
Enter | 確定 |
↑ | 前候補 |
↓ | 次候補 |
← | 1文字消去 |
→ | 1文字確定 |
補完 は現在の入力から一意に定まる部分を確定します。2回以上押しても何も起こりません。 カスタマイズして 補完/次候補 に割り当てると3回目以降で次候補へ行くようになります。
キャンセル は補完開始前の状態に戻ります。ただしオプション設定で Appear=listbox
としているときはリストボックスが消えるだけです。
以下の場合は現在選択中の候補が自動的に確定されます。
WithinWord
に含まれない記号を入力した
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 が同梱されています。
設定ファイルはいくつかのセクションからなり、それぞれのセクションに キー=値
の形でオプション設定を書きます。
[セクション] キー=値 …
オプション設定は
の順に検索され、最初に見つかったものが適用されます。見つからない場合は何も設定されていないものと見なされます。
特定の拡張子に対する設定はピリオドで始まる拡張子のセクションに書きます。
例: 拡張子 mac に対して辞書ファイル hidemac.dic を指定する場合
[.mac] dic=hidemac.dic
値にファイル名を指定するときは、フルパスまたはベースフォルダからの相対パスで書きます。〈→ファイル名の指定方法〉
複数の拡張子に対する設定を1か所にまとめて書くことができます。
@=ファイルタイプ
と書きます。
例: 拡張子 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=mix …混合補完モードになります。 source=self …名前補完モードになります。 source=path …ファイル名補完モードになります。 source=font …フォント名補完モードになります。
dic=filename
dic=filename dic2=filename dic3=filename ; 以下同様
dic
は dic1
と書くこともできます(が、推奨しません)。両方書いた場合は dic1
が優先されます。
plugin=filename
AutoSave=yes名前補完モードは保存されたファイルから候補を探すため、未保存の部分は候補に挙がりません。
Overwrite=yes
CaseSense=yes候補の絞り込み表示を行わない場合は効果がありません(大文字小文字は区別されないように見えます)。ファイル名補完モードでは大文字小文字は区別されません。
WithinWord=@#$%&...この設定は補完対象文字列の取得と不一致による自動確定の動作に影響します。
Unsorted=yes …内部でソートします。 Unsorted=overlap …内部でソートし、重複候補を取り除きます(正規化)。 Unsorted=writeback …辞書ファイルの内容を正規化し、元の辞書ファイルに書き戻します。
yes
および overlap
はプラグインが作るテンポラリ辞書のための機能です。ユーザーが作る辞書ファイルは writeback
を使って正規化してください。〈→辞書の作り方:正規化〉
最初 途中 最後 AutoFix=first … ○ ― ― AutoFix=first,last … ○ ― ○ AutoFix=last … ― ― ○ AutoFix=always … ○ ○ ○
Appear=listbox …候補がリストボックスにのみ表示されます。(Visual Studio 風) Appear=inline …候補がカーソル位置にのみ表示されます。(インライン補完風)
Filter=no
Width=300
Rows=10
path.ShowHidden=yes …隠しファイルも候補に挙がります。 path.ShowHidden=no …隠しファイルは候補に挙がりません。
path.FileSystem=Unix …ディレクトリ区切り文字が / になります。 path.FileSystem=DOS …ディレクトリ区切り文字は \ です。
path.CaseChange=Lower …小文字に変換されます。 path.CaseChange=Upper …大文字に変換されます。
path.Filter=*.jpg;*.png;*.gif
CompleteX の辞書は行指向のテキストファイルです。アーカイブに入っている sample.dic を参考にしてください。
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
以外の文字が含まれる場合はオプション設定の WithinWord
をいじる必要があります。
正規化とはファイル内容を行ごとにソートし重複行を除去することです。辞書ファイルの正規化は次の方法で行います。 Windows の sort コマンドとは結果が異なりますので、必ず次の方法を使ってください。
Unsorted=writeback
という行を書き加えます。
[.txt] dic=sample.dic Unsorted=writeback
Unsorted=writeback
は自動的に削除されます。
Unsorted=writeback
を削除してください。
複数の辞書ファイルを自動的にマージして利用できます。次のように設定します。
[.txt] dic=hoge.dic dic2=fuga.dic dic3=piyo.dic
dic
が1つめ、 dic2
が2つめ、 dic3
が3つめの辞書ファイルです。以下 dic4
, dic5
, ... の順に番号が途切れるまで有効です。
他の秀丸用補完マクロで使われている辞書ファイルも調べてみました。 (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
に追加します。
他の秀丸マクロから CompleteX の補完機能を利用することができます。また、そのマクロを CompleteX から起動することもできます。このようなマクロをプラグインと呼びます。
CompleteX-Main.mac が同時に2つ実行されることに注意してください。1つめ (Active) は設定ファイルを見て拡張子別に処理を分岐するだけの、単なるランチャーとして働きます。2つめ (Passive) は補完動作を実行し、結果をプラグインに返します。プラグインと本体は設定ファイルを介して情報をやりとりします。
次のマクロは簡単なプラグインの例です。順を追って説明します。
$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.
plugin
セクションの type
キーに plugin
という値を書き込みます。本体はこの値を見てプラグインから起動されたことを知ります。*1
[plugin] source=dic …辞書補完モードになります。 source=mix …混合補完モードになります。 source=self …名前補完モードになります。 source=path …ファイル名補完モードになります。 source=font …フォント名補完モードになります。 source=auto …辞書ファイルの有無によって辞書補完モードと名前補完モードが自動的に切り替わります。 source=list …候補リストを指定します。
source=list
のときは list=
が、それ以外のときは dic=
が有効です。*2
[plugin] dic=~tmp2.dic …辞書ファイルを指定します。 list=hoge,fuga,piyo …候補リストをカンマ区切りで指定します。
@
キーに filetype を書き込みます。
plugin
セクションの result
キーに返り値が、 instr
キーに確定文字列が書き込まれています。*3
[plugin] result=-1 …キャンセル( [Esc] を押した) result=0 …一致による自動確定 result=1 …手動確定( [Enter] を押した) result=35 …不一致による自動確定 値は最後に入力された文字コード(32〜126) instr=InsertedString …確定文字列
plugin
セクションを消去します。プラグインを作るとき、私の書いたコードの一部を流用するのは OK です。許可は要りません。
自作マクロに補完エンジンとして CompleteX 本体を組み込むことができます。同梱配布も OK です。詳しくは談話室で相談に乗ります。
source=auto
と書いてください。たとえば次のようにすると「デフォルトは混合補完モード、ただし拡張子 java に限り辞書補完モード」という指定ができます。
[default] source=mix [.java] source=auto dic=java2se.dic
設定ファイルに書ける特殊なセクションとして次のものがあります。これらのセクションに設定を記述してください。
[new] … 新規文書に対する設定 [grep] … grep 結果ウィンドウに対する設定 [exeresult] … 実行結果ウィンドウに対する設定 [turukame] … 秀丸メールに対する設定
ベースフォルダに new.dic, grep.dic, exeresult.dic, turukame.dic を置いて使うこともできます。
なお、これらのウィンドウでは名前補完モードは使えません。(それを可能にするプラグインを作ることはできます)
config.txt を排他的に開いたまま実行していませんか。 config.txt を閉じるか、ファイルの排他制御を無効にしてください。
談話室へお越しください。