Next: , Previous: , Up: Completion   [Contents][Index]


21.6.2 補完とミニバッファー

このセクションでは補完つきでミニバッファーから読み取るための、基本的なインターフェイスを説明します。

Function: completing-read prompt collection &optional predicate require-match initial history default inherit-input-method

この関数は補完の提供によりユーザーを支援して、ミニバッファーから文字列を読み取る。prompt (文字列でなければならない)のプロンプトとともにミニバッファーをアクティブ化する。

実際の補完は補完テーブルcollectionと補完述語predicateを関数try-completion (Basic Completionを参照)に渡すことにより行われる。これは補完の使用されるローカルキーマップに特定のコマンドをバインドしたとき発生する。これらのコマンドのいくつかはtest-completionも呼び出す。したがってpredicateが非nilなら、collectioncompletion-ignore-caseが矛盾しないようにすること。Definition of test-completionを参照されたい。

collectionが関数のときの詳細な要件はProgrammed Completionを参照のこと。

オプション引数require-matchの値はユーザーがミニバッファーをexitする方法を決定する。

しかしrequire-matchの値に関わらず、空の入力は常に許容される。この場合completing-readdefaultがリストなら最初の要素、defaultnilなら""、またはdefaultをリターンする。文字列とdefault内の文字列はヒストリーコマンドを通じてユーザーが利用できる。

関数completing-readrequire-matchnilならキーマップとしてminibuffer-local-completion-mapを、require-matchが非nilならminibuffer-local-must-match-mapを使用する。Completion Commandsを参照のこと。

引数historyは入力の保存とミニバッファーヒストリーコマンドに、どのヒストリーリスト変数を使用するか指定する。デフォルトはminibuffer-historyhistoryがシンボルtなら、ヒストリーを記録しない。Minibuffer Historyを参照のこと。

initialはほとんどの場合は推奨されない。historyにたいするコンスセル指定と組み合わせた場合のみ非nil値の使用を推奨する。Initial Inputを参照のこと。デフォルト入力にたいしてはかわりにdefaultを使用すること。

引数inherit-input-methodが非nilなら、ミニバッファーにエンターする前にカレントだったバッファーが何であれ、カレントの入力メソッド(Input Methodsを参照)、およびenable-multibyte-charactersのセッティング(Text Representationsを参照)が継承される。

変数completion-ignore-caseが非nilなら、利用可能なマッチにたいして入力を比較するときの補完はcaseを区別しない。Basic Completionを参照のこと。このモードでの操作では、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-readbarfooをリターンする。

completing-read関数は、実際に補完を行うコマンドの情報を渡すために変数をバインドする。これらの変数は以降のセクションで説明する。

Variable: completing-read-function

この変数の値は関数でなければならず、補完つきの読み取りを実際に行うためにcompleting-readから呼び出される。この関数はcompleting-readと同じ引数を受け入れる。他の関数のバインドして通常のcompleting-readの振る舞いを完全にオーバーライドすることができる。