補完のデフォルト動作を変更するために使用される変数がいくつかあります。
この変数の値は補完を行うために使用される補完スタイル(シンボル)である。補完スタイル(completion
style)とは、補完を生成するためのルールセットのこと。このリストにあるシンボルはそれぞれ、completion-styles-alist
内に対応するエントリーをもたなければならない。
この変数には補完スタイルのリストが格納される。リスト内の各要素は以下の形式をもつ
(style try-completion all-completions doc)
ここでstyleは補完スタイルの名前(シンボル)であり、そのスタイルを参照するために変数completion-styles
内で使用されるかもしれない。try-completionは補完を行なう関数で、all-completions補完をリストする関数、docは補完スタイルを説明する文字列である。
関数try-completionとall-completionsはstring、collection、predicate、pointの4つの引数をとる。引数string、collection、predicateの意味はtry-completion
(基本的な補完関数を参照)のときと同様。引数pointはstring内のポイント位置。各関数は自身の処理を行ったら非nil
、行わなかった場合(たとえば補完スタイルに一致するようにstringを行う方法がない場合)はnil
をリターンする。
ユーザーがminibuffer-complete
(補完を行うミニバッファーコマンドを参照)のような補完コマンドを呼び出すと、Emacsはcompletion-styles
に最初にリストされたスタイルを探して、そのスタイルのtry-completion関数を呼び出す。この関数がnil
をリターンしたら、Emacsは次にリストされた補完スタイルに移動してそのスタイルのtry-completion関数を呼び出すといったように、try-completion関数の1つが補完の処理に成功して非nil
値をリターンするまで順次これを行なう。同様の手順はall-completions関数を通じて補完のリストにも行われる。
利用できる補完スタイルについてはCompletion Styles in The GNU Emacs Manualを参照のこと。
この変数は特別な補完スタイルと、特定の種類のテキスト補完時に使用するその他の補完動作を指定する。この変数の値は(category
.
alist)
という形式の要素をもつようなalistである。categoryは何が補完されるかを記述するシンボルで、現在のところカテゴリーにbuffer
、file
、unicode-name
が定義されているが、これに特化した補完関数(プログラムされた補完を参照)を通じて他のカテゴリーを定義できる。alistはそのカテゴリーにたいして補完がどのように振る舞うべきかを記述する連想リスト。alistのキーとして以下がサポートされる:
styles
値は補完スタイル(シンボル)のリスト。
cycle
値はそのカテゴリーにたいするcompletion-cycle-threshold
(Completion Options in The GNU Emacs Manualを参照)の値。
cycle-sort-function
循環する際にエントリーをソートする関数。
display-sort-function
この関数は*Completions*バッファー内のエントリーをソートする。値にnil
を指定するとメタデータから取得したソート関数、それもnil
ならcompletions-sort
へフォールバックすることを意味する。identity
なら元の順のまま何もソートせず、それ以外の値の場合にはcompletions-sort
で使用されている値以外の値を指定できる(Completion
Options in The GNU Emacs Manualを参照)。
group-function
グループ補完のための関数。
annotation-function
補完に注釈を加えるための関数。
affixation-function
補完にプレフィクスまたはサフィックスを追加するための関数。
メタデータエントリーの完全なリストについてはプログラムされた補完を参照してください。
この変数はカレント補完コマンドの特別なプロパティの指定に使用される。この変数は補完に特化したコマンドによりletバインドされることを意図している。値はプロパティ/値ペアーのリスト。以下のプロパティがサポートされる:
:category
値は補完関数が補完を試みているテキストの種類を説明するシンボル。シンボルが上述のcompletion-category-overrides
内のキーの1つにマッチする場合、通常の補完動作はオーバーライドされる。補完変数を参照のこと。
:annotation-function
値は補完バッファー内に注釈(annotation)を加える関数。この関数は引数completionを1つ受け取りnil
、または補完の隣に表示する文字列をリターンしなければならない。この関数が自身で注釈サフィックス文字列にフェイスをputしなければ、その文字列にはデフォルトでcompletions-annotations
フェイスが追加される。
:affixation-function
値は補完にプレフィックスとサフィックスを追加する関数であること。この関数は単一の引数として補完リストを受け取り、注釈付きの補完リストをリターンすること。リターンされるリストは補完、プレフィックス文字列、サフィックス文字列の3要素からなるリストを要素とするリストでなければならない。この関数は:annotation-function
より優先される。
:group-function
グループ補完のための関数。
:display-sort-function
この関数は*Completions*バッファー内のエントリーをソートする。
:cycle-sort-function
循環する際にエントリーをソートする関数。
:exit-function
値は補完を行った後に実行する関数。この関数は2つの引数stringとstatusを受け取る。stringは補完されたフィールドのテキストで、statusは行われた操作の種類を示す。操作の種類はテキストの補完が完了したならfinished
、それ以上補完できないが補完が完了していなければsole
、有効な補完だがさらに補完できるときはexact
となる。