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


19.6.2 Completion and the Minibuffer

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

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を参照のこと。

オプション引数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-historyMinibuffer Historyを参照のこと。

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

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

変数completion-ignore-caseが非nilの場合、利用可能なマッチにたいして入力を比較するときの補完は、大文字小文字を区別しない。Basic Completionを参照のこと。このモードでの操作では、predicateも大文字小文字を区別してはならない(さもないと驚くべき結果となるであろう)。

以下は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の振る舞いを完全にオーバーライドすることができる。