21.6.2 補完とミニバッファー

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

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

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

実際の補完は補完テーブルcollectionと補完述語predicateを関数try-completion (基本的な補完関数を参照)に渡すことにより行われる。これは補完の使用されるローカルキーマップに特定のコマンドをバインドしたとき発生する。これらのコマンドのいくつかはtest-completionも呼び出す。したがってpredicateが非nilなら、collectioncompletion-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をリターンすること。
  • require-matchにたいする他の値はtと同じだが、exitコマンドは補完処理中はexitしない。

しかしrequire-matchの値に関わらず、空の入力は常に許容される。この場合completing-readdefaultがリストなら最初の要素、defaultnilなら""、またはdefaultをリターンする。文字列とdefault内の文字列はヒストリーコマンドを通じてユーザーが利用できる(ミニバッファーのコマンドを参照)。更にdefaultの値をM-nで使い果たすと、その補完候補が“未来のヒストリー”に追加される。minibuffer-default-add-functionを参照のこと。

関数completing-readrequire-matchnilならキーマップとしてminibuffer-local-completion-mapを、require-matchが非nilならminibuffer-local-must-match-mapを使用する。補完を行うミニバッファーコマンドを参照のこと。

引数historyは入力の保存とミニバッファーヒストリーコマンドに、どのヒストリーリスト変数を使用するか指定する。デフォルトはminibuffer-historyhistoryがシンボル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-readbarfooをリターンする。

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

Variable: completing-read-function

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

This page has generated for branch:work/emacs-30_69b16e5c63840479270d32f58daea923fe725b90, commit:5e3f74b56ff47b5bcef2526c70f53f749bbd45f6 to check Japanese translation.