Next: Completion Commands, Previous: Basic Completion, Up: Completion
本節ではミニバッファからの補完による読み取り用の 基本インターフェイスについて述べます。
この関数は、与えられた補完でユーザーを補佐して ミニバッファで文字列を読み取る。 文字列であるプロンプトpromptでミニバッファを活性にする。
実際の補完は、collectionとpredicateを 関数
try-completion
に渡して行う。 これは、補完を用いるローカルキーマップでバインドされたコマンドで行われる。require-matchが
nil
であると、 ミニバッファでの入力に関わらず ミニバッファから抜けるコマンドは動作する。 require-matchがt
であると、 ミニバッファでの入力がcollectionの1つの要素に補完できない限り、 ミニバッファから抜ける通常のコマンドは動作しない。 require-matchがnil
でもt
でもないと、 ミニバッファでの入力がcollectionの1つの要素に一致しない限り、 ミニバッファから抜けるコマンドは動作しない。しかし、require-matchの値に関わらず、 空の入力はつねに許される。 その場合、
completing-read
はdefaultを返す。 defaultの値は(nil
でなければ)履歴コマンドを介しても ユーザーが使える。ミニバッファが空の状態で<RET>を打つと、 ユーザーは空入力で抜けることができる。 そうすると、
completing-read
は""
を返す。 これにより、読み取った値に対してコマンドが使うどんなデフォルトでも指定できる。 require-matchの値、および、collectionに空文字列が 含まれるかどうかに関わらず、ユーザーはこのようにして<RET>で戻れる。関数
completing-read
はread-minibuffer
を呼び出すことで動作する。 require-matchがnil
であると、 キーマップとしてminibuffer-local-completion-map
を使い、nil
以外であるとminibuffer-local-must-match-map
を使う。 see Completion Commands。引数histは、入力を保存しミニバッファ履歴コマンドで 使う履歴リスト変数を指定する。 デフォルトは
minibuffer-history
である。 see Minibuffer History。initialが
nil
以外であると、completing-read
はこれを入力の一部としてミニバッファに挿入する。 これにより、ユーザーは補完コマンドとともに入力を編集できる。 ほとんどの場合、initialではなくdefaultを使うことを勧める。引数inherit-input-methodが
nil
以外であると、 ミニバッファに入るまえのカレントバッファがなんであれ、 カレントバッファから現在の入力方式(see Input Methods)とenable-multibyte-characters
(see Text Representations) の設定を継承する。組み込み変数
completion-ignore-case
がnil
以外であると、 大文字小文字を区別せずに候補に対して入力を比較する。 see Basic Completion。
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
は、 補完を実際に行うコマンドに情報を渡すために3つの変数を束縛する。 3つの変数とは、minibuffer-completion-table
、minibuffer-completion-predicate
、minibuffer-completion-confirm
である。 これらについて詳しくは、Completion Commandsを参照。