このセクションでは補完つきでミニバッファーから読み取るための、基本的なインターフェイスを説明します。
この関数は補完の提供によりユーザーを支援して、ミニバッファーから文字列を読み取る。prompt (文字列でなければならない)のプロンプトとともにミニバッファーをアクティブ化する。
実際の補完は補完テーブルcollectionと補完述語predicateを関数try-completion
(基本的な補完関数を参照)に渡すことにより行われる。これは補完の使用されるローカルキーマップに特定のコマンドをバインドしたとき発生する。これらのコマンドのいくつかはtest-completion
も呼び出す。したがってpredicateが非nil
なら、collectionとcompletion-ignore-case
が矛盾しないようにすること。Definition of test-completionを参照されたい。
collectionが関数のときの詳細な要件はプログラムされた補完を参照のこと。
オプション引数require-matchの値はユーザーがミニバッファーをexitする方法を決定する。
nil
なら、通常のミニバッファーexitコマンドはミニバッファーの入力と無関係に機能する。
t
なら、入力がcollectionの要素に補完されるまで通常のミニバッファーexitコマンドは機能しない。
confirm
なら、どのような入力でもユーザーはexitできるが、入力がconfirm
の要素に補完されていなければ確認を求められる。
confirm-after-completion
なら、どのような入力でもユーザーはexitできるが、前のコマンドが補完コマンド(たとえばminibuffer-confirm-exit-commands
の中のコマンドのいずれか)で、入力の結果がcollectionの要素でなければ確認を求められる。補完を行うミニバッファーコマンドを参照のこと。
nil
をリターンすること。
t
と同じだが、exitコマンドは補完処理中はexitしない。
しかしrequire-matchの値に関わらず、空の入力は常に許容される。この場合completing-read
はdefaultがリストなら最初の要素、defaultがnil
なら""
、またはdefaultをリターンする。文字列とdefault内の文字列はヒストリーコマンドを通じてユーザーが利用できる(ミニバッファーのコマンドを参照)。更にdefaultの値をM-nで使い果たすと、その補完候補が“未来のヒストリー”に追加される。minibuffer-default-add-functionを参照のこと。
関数completing-read
はrequire-matchがnil
ならキーマップとしてminibuffer-local-completion-map
を、require-matchが非nil
ならminibuffer-local-must-match-map
を使用する。補完を行うミニバッファーコマンドを参照のこと。
引数historyは入力の保存とミニバッファーヒストリーコマンドに、どのヒストリーリスト変数を使用するか指定する。デフォルトはminibuffer-history
。historyがシンボルt
なら、ヒストリーを記録しない。ミニバッファーのヒストリーを参照のこと。
initialはほとんどの場合は推奨されない。historyにたいするコンスセル指定と組み合わせた場合のみ非nil
値の使用を推奨する。入力の初期値を参照のこと。デフォルト入力にたいしてはかわりにdefaultを使用すること。
引数inherit-input-methodが非nil
なら、ミニバッファーにエンターする前にカレントだったバッファーが何であれ、カレントの入力メソッド(入力メソッドを参照)、およびenable-multibyte-characters
のセッティング(テキストの表現方法を参照)が継承される。
変数completion-ignore-case
が非nil
なら、利用可能なマッチにたいして入力を比較するときの補完はcaseを区別しない。基本的な補完関数を参照のこと。このモードでの操作では、predicateもcaseを区別してはならない(さもないと驚くべき結果となるであろう)。
以下はcompleting-read
を使用した例:
(completing-read "Complete a foo: " '(("foobar1" 1) ("barfoo" 2) ("foobaz" 3) ("foobar2" 4)) nil t "fo")
;; 前の式を評価後に、 ;; ミニバッファーに以下が表示される: ---------- Buffer: Minibuffer ---------- Complete a foo: fo∗ ---------- Buffer: Minibuffer ----------
その後ユーザーがDEL DEL b
RETをタイプすると、completing-read
はbarfoo
をリターンする。
completing-read
関数は、実際に補完を行うコマンドの情報を渡すために変数をバインドする。これらの変数は以降のセクションで説明する。
この変数の値は関数でなければならず、補完つきの読み取りを実際に行うためにcompleting-read
から呼び出される。この関数はcompleting-read
と同じ引数を受け入れる。他の関数のバインドして通常のcompleting-read
の振る舞いを完全にオーバーライドすることができる。