多くの場合、テキストを文字列として読み取るためにミニバッファを使います。
Lispオブジェクトのテキスト表現を読み取るためにも使えます。
ミニバッファでの入力のもっとも基本的な関数は
read-from-minibuffer
であり、どちらの目的にも使えます。
多くの場合、Lisp関数の途中でミニバッファの入力関数を呼ぶべきではありません。
そのかわりに、interactive
の指定で、
コマンドの引数を読み取る操作の一部として
すべてのミニバッファ入力を行います。
See Defining Commands。
この関数は、ミニバッファから入力を得るもっとも汎用の方法である。 デフォルトでは、任意のテキストを受け取り文字列として返す。 しかし、readが
nil
以外であれば、read
を用いてテキストを Lispオブジェクトへ変換する(see Input Functions)。この関数がまず行うことは、ミニバッファを活性にし、 プロンプトprompt-stringとともに表示することである。 prompt-stringは文字列であること。 これで、ユーザーはミニバッファでテキストを編集できるようになる。
ユーザーがミニバッファを抜けるコマンドを打つと、
read-from-minibuffer
は ミニバッファ内のテキストから戻り値を構築する。 通常、当該テキストを含む文字列を返す。 しかし、readがnil
以外であると、read-from-minibuffer
はテキストを読み取った結果である Lispオブジェクトを評価せずに返す。 (読み取りについてはsee Input Functions。)引数defaultは、履歴コマンドで使うデフォルト値を指定する。 これは文字列か
nil
であること。 readがnil
以外である場合、 ユーザーの入力が空であるときには、read
への入力としてもdefaultを用いる。 しかし、(readがnil
である)通常の場合、 ユーザーの入力が空のとき、read-from-minibuffer
は defaultを返さずに空文字列""
を返す。 この意味において、この関数は本章の他のミニバッファ用入力関数と異なる。keymapが
nil
以外であると、 ミニバッファのローカルキーマップとして用いる。 keymapを省略したりnil
であると、minibuffer-local-map
の値をキーマップとして用いる。 キーマップを指定することは、 補完などのさまざまな応用向けにミニバッファをカスタマイズする もっとも重要な方法である。引数histは、ミニバッファでの入力を保存し履歴コマンドを使用可能に するために用いる履歴リスト変数を指定する。 デフォルトは
minibuffer-history
である。 see Minibuffer History。変数
minibuffer-allow-text-properties
がnil
以外であると、 返される文字列には、ミニバッファで指定されたテキスト属性が含まれる。 さもなければ、値を返すときにすべてのテキスト属性を取り除く。引数inherit-input-methodが
nil
以外であると、 ミニバッファに入るまえにどのバッファにいたかに関わらず、 そのバッファから現在の入力方式(see Input Methods)とenable-multibyte-characters
(see Text Representations)の設定を 継承する。initial-contentsが文字列であれば、
read-from-minibuffer
は、 ユーザーがテキスト編集を始めるまえに、 この文字列をミニバッファに挿入しその末尾にポイントを置く。 この文字列を初期内容とするミニバッファが現れる。あるいは、initial-contentsは、
(
string.
position)
という形式のコンスセルでもよい。 これは、文字列stringをミニバッファに挿入し、 ポイントは末尾にではなく 先頭からposition番目の文字に置くことを意味する。使用上の注意: 引数initial-contentsとdefaultは、 多かれ少なかれ同じことを行う代替方法を提供する。
read-from-minibuffer
の1つの呼び出しにおいて、 両者の機能を同時に使うことに意味はない。 一般には、defaultを使うことを勧める。 というのは、ユーザーがデフォルト値を望む場合にはデフォルト値を挿入でき、 それ以外の場合にはデフォルト値を削除しなくてもよいからである。
この関数はミニバッファから文字列を読み取り、それを返す。 引数promptとinitialは、
read-from-minibuffer
と同様に使われる。 使用するキーマップはminibuffer-local-map
である。省略可能な引数historyは、
nil
以外であると、 履歴リストと(省略可能な)リスト内での初期位置を指定する。 省略可能な引数defaultは、 ユーザー入力が空の場合に返されるデフォルト値であり、文字列であること。 省略可能な引数inherit-input-methodは、 カレントバッファの入力方式を継承するかどうかを指定する。この関数は関数
read-from-minibuffer
の インターフェイスを単純化したものである。(read-string prompt initial history default inherit) == (let ((value (read-from-minibuffer prompt initial nil nil history default inherit))) (if (equal value "") default value))
この変数が
nil
であると、read-from-minibuffer
はミニバッファで指定されたすべての テキスト属性を返すまえに取り除く。 すべてのミニバッファがread-from-minibuffer
を使うので、 この変数はすべてのミニバッファ入力に適用される。この変数の値に関わらず、 補完関数は無条件にテキスト属性を廃棄することに注意。
ミニバッファから読み取るときのデフォルトのローカルキーマップ。 デフォルトでは、以下のバインディングである。
- C-j
exit-minibuffer
- <RET>
exit-minibuffer
- C-g
abort-recursive-edit
- M-n
next-history-element
- M-p
previous-history-element
- M-r
next-matching-history-element
- M-s
previous-matching-history-element
この関数はミニバッファから文字列を読み取るが、 入力には白文字を許さず、白文字は入力を終らせる。 引数prompt、initial、inherit-input-methodは、
read-from-minibuffer
と同様に使われる。これは関数
read-from-minibuffer
の インターフェイスを単純化したものであり、 引数keymapとしてminibuffer-local-ns-map
の値を渡す。 キーマップminibuffer-local-ns-map
では C-qを再バインドしないため、 クォートすれば空白を文字列に含めることができる。(read-no-blanks-input prompt initial) == (read-from-minibuffer prompt initial minibuffer-local-ns-map)