大文字小文字の違いは、コマンド名のように大文字小文字を区別する(case-sensitive)引数では重要です。たとえばコマンド名の補完では、‘AU’では‘auto-fill-mode’に補完されません。大文字小文字の違いは、それが問題にならない引数の補完では無視されます。
ファイル名を補完するとき、変数read-file-name-completion-ignore-case
が非nil
なら、大文字小文字の違いは無視されます。GNU/Linuxのように、ファイル名の大文字と小文字を区別するシステムでは、デフォルト値はnil
です。Microsoft
Windowsのように、ファイル名の大文字と小文字を区別しないシステムでは、非nil
です。バッファー名を補完するとき、read-buffer-completion-ignore-case
が非nil
なら、大文字小文字の違いは無視されます。デフォルトはnil
です。
通常Emacsはファイル名を補完するとき、選ばれるべきではないと思われる、特定の候補を無視します。これはリスト変数completion-ignored-extensions
により決定されます。リストの要素はに文字列を指定します。それらの文字列で終わるファイル名は、補完候補としては無視されます。スラッシュ(/)で終わる要素は、ディレクトリー名を表します。completion-ignored-extensions
の標準的な値は".o"
、".elc"
、"~"
を含むいくつかの要素です。たとえばディレクトリーに‘foo.c’、‘foo.elc’があるとき、‘foo’は‘foo.c’に補完されます。しかしすべての補完候補が無視すべき文字列で終わるとき、これらの候補は無視されません。前の例でいうと‘foo.e’は‘foo.elc’に補完されます。Emacsは補完候補リストで補完候補を表示するとき、completion-ignored-extensions
を無視します。
Shellでの補完は、ファイル名補完の拡張されたバージョンです。Shellモードのオプションを参照してください。
completion-auto-help
にnil
がセットされていると、補完コマンドは補完リストバッファーを表示しません。表示するには?を入力しなければなりません。値がlazy
の場合、Emacsは2度目の補完を試みたときだけ、補完リストバッファーを表示します。もし補完すべきものがない場合には1度目のTABでは‘Next
char not
unique’、2度目のTABで補完リストバッファーが表示されます。値がalways
であれば補完を試みると常に補完リストバッファーが表示されます。
これによる補完リストバッファーの初回の表示もcompletion-auto-help
によって制御されます。値がt
かlazy
なら、補完候補を表示するためにポップアップしたウィンドウは、Emacsが補完できたら削除されます(そして更に何かテキストがタイプされた際にEmacsが補完できなければ再びウィンドウがポップアップするかもしれません)。値がalways
の場合には、ポップアップしたウィンドウは補完を終了した場合だけ削除されます。ハイブリッドな振る舞いをするのが値visible
です。これは補完リストバッファーを表示するウィンドウをポップアップするかどうか判断する際はt
、そのポップアップしたウィンドウを削除するかどうか判断する際にはalways
のように振る舞います。
Emacsが補完候補を表示するウィンドウをポップアップする際に、オプションでそのウィンドウを選択することができます。この振る舞いを有効にするには、ユーザーオプションcompletion-auto-select
をt
にカスタマイズしてください。これによってEmacsが補完用のウィンドウをポップアップする際のTABキーの振る舞いが変更されます。TABを押下すると補完リストバッファーに切り替わり、カーソル移動コマンドで候補間を移動、そしてRETで候補を選択できます。completion-auto-select
の値がsecond-tab
なら1回目のTABで補完リストバッファーをポップアップ、2回目でそのウィンドウに切り替わります。
completion-auto-select
をカスタマイズしているか、あるいはC-x
oをタイプして切り替えることによって補完を表示中のウィンドウが選択された場合には、矢印キーのUPとDOWN
(それぞれnext-line-completion
とprevious-line-completion
)で、補完候補の行間を移動することができます。プレフィックス数引数を与えれば、その行数分移動します。completion-auto-wrap
が非nil
の場合には、これらのコマンドは候補リストの下端と上端で他端にオーバーラップします。
completion-cycle-threshold
が非nil
のとき、補完コマンドは補完候補を循環(cycle)することができます。ミニバッファーのテキストで1つ以上の補完候補がある場合は通常、補完コマンドは補完できた文字までを表示します。completion-cycle-threshold
をt
に変更すると、補完コマンドは補完候補の中から最初の候補を表示します。それ以降の補完コマンドの呼び出しでは、その次の補完候補を循環的に表示します。completion-cycle-threshold
を数値nにすると、補完候補がn以下のときだけ循環表示の動作をします。
補完を表示する際、Emacsは通常だと補完を表示するバッファーを新たにポップアップします。デフォルトでは補完はウィンドウ幅に合わせた列数を用いて水平方向にソートされますが、ユーザーオプションcompletions-format
をカスタマイズして変更できます。値がvertical
であれば補完を垂直方向にソート、one-column
なら1つの列だけを使用します。
ユーザーオプションcompletions-sort
は、‘*Completions*’バッファーにおける補完候補のソート順を制御します。デフォルトであるalphabetical
はアルファベット順、値nil
はソートを無効、値historical
はまずアルファベット順にソートしてからミニバッファーのヒストリーの候補順にソートします。値は関数でもよく、その関数は補完候補のリストとともに呼び出されて、望ましい順にソートしたリストをリターンする必要があります。
completions-max-height
が非nil
なら、それは補完ウィンドウの高さを制限する値です。この値には、もしあればモードライン、ヘッダーライン、下ディバイダーを含めた行数を指定します。display-buffer-alist
を使用すれば、Completionウィンドウ表示に関するプロパティにたいしてより複雑な制御を行うことができます(Action Alists for Buffer Display in The Emacs
Lisp Reference Manualを参照)。
変数completions-header-format
は、補完リストの候補の前に表示する情報的な行を制御するフォーマット仕様文字列です。この文字列に‘%s’構文が含まれていれば、補完リストバッファーに表示されている補完の候補数に置き換えられます。このヘッダーラインの表示を抑制するには、この変数の値をnil
にカスタマイズしてください。この変数の値となる文字列には、ヘッダーラインの外観を変更するためのテキストプロパティをもたせることができます。役に立つプロパティとしてはface
やcursor-intangible
が挙げられます(Properties with Special Meanings in The Emacs Lisp
Reference Manualを参照)。
completions-highlight-face
がフェイスの名前なら、RETのタイプやマウスのクリックによって選択されるカレントの補完候補をハイライトするためにそのフェイスが使用されます。この変数のデフォルト値はcompletions-highlight
ですが、値がnil
ならハイライトは無効になります。この機能には特別なテキストプロパティcursor-face
が使用されています。