GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/Completion-Options.html ・ emacs-doc.conao3.com

10.4.5 完了オプション

コマンド名など、大文字小文字を区別する引数を補完する場合、大文字小文字は重要になります。例えば、コマンド名を補完する際、‘AU’ は ‘auto-fill-mode’ に補完されません。大文字小文字を区別しない引数を補完する場合は、大文字小文字の違いは無視されます。

ファイル名を補完する際、変数 read-file-name-completion-ignore-case が nil 以外であれば、大文字小文字の区別は無視されます。GNU/Linux のようにファイル名の大文字小文字を区別するシステムではデフォルト値は nil となり、Microsoft Windows のように区別しないシステムでは nil 以外となります。バッファ名を補完する際、変数 read-buffer-completion-ignore-case が nil 以外であれば、大文字小文字の区別は無視されます。デフォルト値は nil です。

When completing file names, Emacs usually omits certain alternatives that are considered unlikely to be chosen, as determined by the list variable completion-ignored-extensions. Each element in the list should be a string; any file name ending in such a string is ignored as a completion alternative. Any element ending in a slash (/) represents a subdirectory name. The standard value of completion-ignored-extensions has several elements including ".o", ".elc", and "~". For example, if a directory contains ‘foo.c’ and ‘foo.elc’, ‘foo’ completes to ‘foo.c’. However, if all possible completions end in otherwise-ignored strings, they are not ignored: in the previous example, ‘foo.e’ completes to ‘foo.elc’. Emacs disregards completion-ignored-extensions when showing completion alternatives in the completion list.

シェル補完はファイル名補完の拡張版です。シェルモードオプションを参照してください。

completion-auto-help に nil が設定されている場合、補完コマンドが補完リストバッファを表示することはありません。リストを表示するには ? と入力する必要があります。値が lazy の場合、Emacs は2回目の補完試行時にのみ補完リストバッファを表示します。言い換えれば、補完すべきものがない場合、1回目の TAB は ‘Next char not unique’ をエコーし、2回目の TAB で補完リストバッファが表示されます。値が always の場合、補完を試みる際は常に補完リストバッファが表示されます。

補完リストバッファが最初に表示された後の挙動も、completion-auto-help によって制御されます。値が t または lazy の場合、Emacs が補完可能になると補完内容を表示するウィンドウがポップアップします(さらにテキストを入力して再び補完不能になった場合、再度ポップアップすることがあります)。値が always の場合、補完を終了したときにのみウィンドウがポップアップします。値 visible はハイブリッド型であり、補完リストバッファを表示するウィンドウをポップアップさせるかどうかの判定時には t のように、表示させるかどうかの判定時には always のように動作します。

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

completion-cycle-threshold が nil 以外の場合、補完コマンドは補完候補を順に切り替えて補完できます。通常、ミニバッファ内のテキストに対して複数の補完候補がある場合、補完コマンドは最長の共通部分文字列まで補完します。completion-cycle-threshold を t に変更すると、補完コマンドは代わりにそれらの補完候補の最初のものに補完します。その後、補完コマンドが呼び出されるたびに、循環的に次の補完候補へと切り替わります。completion-cycle-threshold に数値 n を指定すると、補完候補が n 個以下である場合にのみ、補完コマンドはこの循環動作に切り替わります。

ユーザーオプション completions-sort は、‘*Completions*’ バッファ内で補完候補がソートされる順序を制御します。デフォルト値の alphabetical では、補完候補はアルファベット順に表示されます。値 nil ではソートが無効になり、値 historical では、まずアルファベット順にソートした後、ミニバッファ履歴における候補の順序に従って並べ替えが行われます。また、この値は関数を指定することもでき、その場合は補完候補のリストを引数として呼び出され、所望の順序でリストを返す必要があります。

デフォルトでは、‘*Completions*’バッファはソート済みの補完候補を水平方向(つまり、列を横切って左から右へ進み、下の行へと続く)に、ウィンドウ幅に収まる限りの列数を用いて表示します。これは、ユーザーオプション completions-format をカスタマイズすることで変更可能です。値が vertical の場合、‘*Completions*’バッファはソート済みの補完候補を垂直方向(つまり、各列内で左から右へ進み、次の列へと続く)に表示し、値が one-column の場合は、すべての補完候補が単一の列に表示されます。5

ポイントが最後の補完候補にあるとき、次の候補(現在のフォーマットのソート順に基づく)へ移動するキーを入力すると、デフォルトでは「ラップアラウンド」が行われます。つまり、ポイントが補完バッファの最初の候補に移動します。同様に、ポイントが最初の候補にあるとき、前の候補へ移動するキーを入力すると、ポイントはバッファの最後の候補に移動します。このラップアラウンドは、ユーザーオプション completion-auto-wrap を nil にカスタマイズすることで抑制できます。これにより、最後の候補で TAB や n を入力しても、あるいは最初の候補で S-TAB や p を入力しても、ポイントは移動しなくなります。

矢印キーによる折り返し動作は、使用している補完フォーマットによって異なります。水平フォーマットでは RIGHT と LEFT を、垂直フォーマットでは DOWN と UP を、ソート順で補完候補間を移動するためのフォーマット依存キーと全く同様に使用でき、折り返し動作も同じです。これに対し、水平フォーマットの DOWN と UP は、現在の補完列内のみで移動し(折り返しが有効な場合は折り返しも行います)、垂直フォーマットの RIGHT と LEFT は、現在の補完行内のみで移動(および有効な場合は折り返し)します。6

completions-max-height が nil 以外の場合、補完ウィンドウのサイズが制限されます。これは、行数とインクルードモード、ヘッダー行、および(あれば)下部の区切り線で指定されます。補完ウィンドウの表示プロパティをより詳細に制御するには、display-buffer-alist を使用できます(The Emacs Lisp Reference Manual の Action Alists for Buffer Display を参照してください)。

変数 completions-header-format は、候補の補完リストの前に表示される情報行を制御するためのフォーマット指定文字列です。ここに ‘%s’ という構文が含まれている場合、それは補完リストバッファに表示される補完数に置き換えられます。見出し行の表示を抑制するには、この変数を nil に設定してください。この変数の値となる文字列には、見出し行の視覚的な外観を変更するためのテキストプロパティを指定できます。有用なプロパティには face や cursor-intangible があります(The Emacs Lisp Reference Manual の Properties with Special Meanings を参照してください)。

completions-highlight-face でフェイスを指定すると、現在の補完候補(RET と入力するかマウスをクリックすることで選択される候補)が、そのフェイスを用いてハイライト表示されます。この変数のデフォルト値は completions-highlight であり、値を nil にするとこのハイライト表示が無効になります。この機能では、特殊なテキストプロパティ cursor-face が使用されます。


脚注

(5)

補完候補が長すぎてウィンドウに複数列で収まらない場合、または候補が3つ以下の場合は、completions-format の値が horizontal や vertical であっても、すべての補完候補が単一の列に表示されます。

(6)

完了バッファに、水平方向または垂直方向のいずれの形式であっても単一の列しか含まれていない場合、completion-auto-wrap の値が nil 以外であれば、書式依存キーと矢印キーの両方がポイントを次の(それぞれ、前の)候補に移動させ、最後の(それぞれ、最初の)候補でのみラップアラウンドします。