Previous: , Up: 補完   [Contents][Index]


9.4.5 補完オプション

大文字小文字の違いは、コマンド名のように大文字小文字を区別する(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-helpnilがセットされていると、補完コマンドは補完リストバッファーを表示しません。表示するには?を入力しなければなりません。値がlazyの場合、Emacsは2度目の補完を試みたときだけ、補完リストバッファーを表示します。もし補完すべきものがない場合には1度目のTABでは‘Next char not unique’、2度目のTABで補完リストバッファーが表示されます。値がalwaysであれば補完を試みると常に補完リストバッファーが表示されます。

これによる補完リストバッファーの初回の表示もcompletion-auto-helpによって制御されます。値がtlazyなら、補完候補を表示するためにポップアップしたウィンドウは、Emacsが補完できたら削除されます(そして更に何かテキストがタイプされた際にEmacsが補完できなければ再びウィンドウがポップアップするかもしれません)。値がalwaysの場合には、ポップアップしたウィンドウは補完を終了した場合だけ削除されます。ハイブリッドな振る舞いをするのが値visibleです。これは補完リストバッファーを表示するウィンドウをポップアップするかどうか判断する際はt、そのポップアップしたウィンドウを削除するかどうか判断する際にはalwaysのように振る舞います。

Emacsが補完候補を表示するウィンドウをポップアップする際に、オプションでそのウィンドウを選択することができます。この振る舞いを有効にするには、ユーザーオプションcompletion-auto-selecttにカスタマイズしてください。これによってEmacsが補完用のウィンドウをポップアップする際のTABキーの振る舞いが変更されます。TABを押下すると補完リストバッファーに切り替わり、カーソル移動コマンドで候補間を移動、そしてRETで候補を選択できます。completion-auto-selectの値がsecond-tabなら1回目のTABで補完リストバッファーをポップアップ、2回目でそのウィンドウに切り替わります。

completion-cycle-thresholdが非nilのとき、補完コマンドは補完候補を循環(cycle)することができます。ミニバッファーのテキストで1つ以上の補完候補がある場合は通常、補完コマンドは補完できた文字までを表示します。completion-cycle-thresholdtに変更すると、補完コマンドは補完候補の中から最初の候補を表示します。それ以降の補完コマンドの呼び出しでは、その次の補完候補を循環的に表示します。completion-cycle-thresholdを数値nにすると、補完候補がn以下のときだけ循環表示の動作をします。

補完を表示する際、Emacsは通常だと補完を表示するバッファーを新たにポップアップします。デフォルトでは補完はウィンドウ幅に合わせた列数を用いて水平方向にソートされますが、ユーザーオプションcompletions-formatをカスタマイズして変更できます。値がverticalであれば補完を垂直方向にソート、one-columnなら1つの列だけを使用します。

ユーザーオプションcompletions-sortは、‘*Completions*’バッファーにおける補完候補のソート順を制御します。デフォルトであるalphabeticalはアルファベット順、値nilはソートを無効にします。値は関数でもよく、その関数は補完候補のリストとともに呼び出されて、望ましい順にソートしたリストをリターンする必要があります。

completions-max-heightが非nilなら、それは補完ウィンドウの高さを制限する値です。この値には、もしあればモードライン、ヘッダーライン、下ディバイダーを含めた行数を指定します。display-buffer-alistを使用すれば、Completionウィンドウ表示に関するプロパティにたいしてより複雑な制御を行うことができます(Action Alists for Buffer Display in The Emacs Lisp Reference Manualを参照)。

変数completions-header-formatは、補完リストの候補の前に表示する情報的な行を制御するフォーマット仕様文字列です。この文字列に‘%s’構文が含まれていれば、補完リストバッファーに表示されている補完の候補数に置き換えられます。このヘッダーラインの表示を抑制するには、この変数の値をnilにカスタマイズしてください。この変数の値となる文字列には、ヘッダーラインの外観を変更するためのテキストプロパティをもたせることができます。役に立つプロパティとしてはfacecursor-intangibleが挙げられます(Properties with Special Meanings in The Emacs Lisp Reference Manualを参照)。

completions-highlight-faceがフェイスの名前なら、RETのタイプやマウスのクリックによって選択されるカレントの補完候補をハイライトするためにそのフェイスが使用されます。この変数のデフォルト値はcompletions-highlightですが、値がnilならハイライトは無効になります。この機能には特別なテキストプロパティcursor-faceが使用されています。