Next: Object from Minibuffer, Previous: Intro to Minibuffers, Up: Minibuffers [Contents][Index]
ミニバッファー入力にたいする基本的なプリミティブはread-from-minibuffer
で、これは文字列とLispオブジェクトの両方からテキスト表現されたフォームを読み取ることができます。関数read-regexp
は特別な種類の文字列である正規表現式(Regular Expressionsを参照)の読み取りに使用されます。コマンドや変数、ファイル名などの読み取りに特化した関数もあります(Completionを参照)。
ほとんどの場合でにはLisp関数の途中でミニバッファー入力関数を呼び出すべきではありません。かわりにinteractive
指定されたコマンドの引数の読み取りの一環として、すべてのミニバッファー入力を行います。Defining Commandsを参照してください。
この関数はミニバッファーから入力を取得するもっとも一般的な手段である。デフォルトでは任意のテキストを受け入れて、それを文字列としてリターンする。しかしreadが非nil
なら、テキストをLispオブジェクトに変換するためにread
を使用する(Input Functionsを参照)。
この関数が最初に行うのはミニバッファーをアクティブにして、プロンプトにprompt(文字列でなければならない)を用いてミニバッファーを表示することである。その後にユーザーはミニバッファーでテキストを編集できる。
ミニバッファーをexitするためにユーザーがコマンドをタイプするとき、read-from-minibuffer
はミニバッファー内のテキストからリターン値を構築する。通常はそのテキストを含む文字列がリターンされる。しかしreadが非nil
なら、read-from-minibuffer
はテキストを読み込んで結果を未評価のLispオブジェクトでリターンする(読み取りについての詳細はInput Functionsを参照)。
引数defaultはヒストリーコマンドを通じて利用できるデフォルト値を指定する。値には文字列、文字列リスト、またはnil
を指定する。文字列と文字列リストは、ユーザーがM-nで利用可能な“未来のヒストリー(future
history)”になる。
readが非nil
なら、ユーザーの入力が空のときのread
の入力としてもdefaultが使用される。defaultが文字列リストの場合には最初の文字列が入力として使用される。defaultがnil
なら、空の入力はend-of-file
エラーとなる。しかし通常(readがnil
)の場合には、ユーザーの入力が空のときread-from-minibuffer
はdefaultを無視して空文字列""
をリターンする。この点ではこの関数はこのチャプターの他のどのミニバッファー入力関数とも異なる。
keymapが非nil
なら、そのキーマップはミニバッファー内で使用されるローカルキーマップとなる。keymapが省略またはnil
なら、minibuffer-local-map
の値がキーマップとして使用される。キーマップの指定は補完のようなさまざまなアプリケーションにたいしてミニバッファーをカスタマイズする、もっとも重要な方法である。
引数historyは入力の保存やミニバッファー内で使用されるヒストリーコマンドが使用するヒストリーリスト変数を指定する。デフォルトはminibuffer-history
。同様にオプションでヒストリーリスト内の開始位置を指定できる。Minibuffer Historyを参照のこと。
変数minibuffer-allow-text-properties
が非nil
なら、リターンされる文字列にはミニバッファーでのすべてのテキストプロパティが含まれる。それ以外なら、値がリターンされるときすべてのテキストプロパティが取り除かれる。
minibuffer-prompt-properties
内のテキストプロパティはプロンプトに適用される。このプロパティリストはデフォルトではプロンプトに使用するフェイスを定義する。このフェイスが与えられるとフェイスリストの最後に適用されて表示前にマージされる。
ユーザーがプロンプトの外観を完全に制御したければすべてのフェイスリストの最後にdefault
フェイスを指定するのがもっとも簡便な方法である。たとえば:
(read-from-minibuffer (concat (propertize "Bold" 'face '(bold default)) (propertize " and normal: " 'face '(default))))
引数inherit-input-methodが非nil
なら、ミニバッファーにエンターする前にカレントだったバッファーが何であれ、カレントの入力メソッド(Input Methodsを参照)、およびenable-multibyte-characters
のセッティング(Text Representationsを参照)が継承される。
ほとんどの場合、initialの使用は推奨されない。非nil
値の使用は、historyにたいするコンスセル指定と組み合わせる場合のみ推奨する。Initial Inputを参照のこと。
この関数はミニバッファーから文字列を読み取ってそれをリターンする。引数prompt、initial、history、inherit-input-methodはread-from-minibuffer
で使用する場合と同様。使用されるキーマップはminibuffer-local-map
。
オプション引数defaultはread-from-minibuffer
の場合と同様に使用されるが、ユーザーの入力が空の場合にリターンするデフォルト値も指定する。read-from-minibuffer
の場合と同様に値は文字列、文字列リスト、またはnil
(空文字列と等価)である。defaultが文字列のときは、その文字列がデフォルト値になる。文字列リストのときは、最初の文字列がデフォルト値になる(これらの文字列はすべて“未来のミニバッファーヒストリー(future
minibuffer history)”としてユーザーが利用できる)。
この関数はread-from-minibuffer
を呼び出すことによって機能する。
(read-string prompt initial history default inherit) ≡ (let ((value (read-from-minibuffer prompt initial nil nil history default inherit))) (if (and (equal value "") default) (if (consp default) (car default) default) value))
この関数はミニバッファーから文字列として正規表現を読み取ってそれをリターンする。ミニバッファーのプロンプト文字列promptが‘:’(とその後にオプションの空白文字)で終端されていなければ、この関数はデフォルトのリターン値(空文字列でない場合。以下参照)の前に‘: ’を付加する。
オプション引数defaultsは、入力が空の場合にリターンするデフォルト値を制御する。値は文字列、nil
(空文字列と等価)、文字列リスト、シンボルのうちのいずれか。
defaultsがシンボルの場合、read-regexp
は変数read-regexp-defaults-function
(以下参照)の値を調べて非nil
のときはdefaultsよりそちらを優先的に使用する。この場合は値は以下のいずれか:
regexp-history-last
。これは適切なミニバッファーヒストリーリスト(以下参照)の最初の要素を使用することを意味する。
nil
、文字列、文字列リストのいずれか)がdefaultsの値となる。
これでread-regexp
がdefaultsを処理した結果はリストに確定する(値がnil
または文字列の場合は1要素のリストに変換する)。このリストにたいしてread-regexp
は以下のような入力として有用な候補をいくつか追加する:
これで関数はユーザー入力を取得するためにread-from-minibuffer
に渡す正規表現のリストを得た。リストの最初の要素は入力が空の場合のデフォルト値である。リストのすべての要素は“未来のミニバッファーヒストリー(future
minibuffer history)”となるリスト(future list in The GNU Emacs Manualを参照)としてユーザーが利用可能になる。
オプション引数historyが非nil
なら、それは使用するミニバッファーヒストリーリストを指定するシンボルである(Minibuffer Historyを参照)。これが省略またはnil
なら、ヒストリーリストのデフォルトはregexp-history
となる。
関数read-regexp
は、デフォルトの正規表現リストを決定するためにこの変数の値を使用するかもしれない。非nil
なら、この変数は以下のいずれかである:
regexp-history-last
。
nil
、文字列、文字列リストのいずれかをリターンする引数なしの関数。
これらの変数の使い方についての詳細は、上述のread-regexp
を参照のこと。
この変数がnil
なら、read-from-minibuffer
とread-string
はミニバッファー入力をリターンする前にすべてのテキストプロパティを取り除く。しかしread-no-blanks-input
(以下参照)、同様に補完つきでミニバッファー入力を行うread-minibuffer
とそれに関連する関数(Reading Lisp Objects With the
Minibufferを参照)は、この変数の値に関わらずテキストプロパティを破棄する。
これはミニバッファーからの読み取りにたいするデフォルトローカルキーマップである。デフォルトでは以下のバインディングをもつ:
exit-minibuffer
exit-minibuffer
minibuffer-beginning-of-buffer
abort-recursive-edit
next-history-element
previous-history-element
next-matching-history-element
previous-matching-history-element
この関数はミニバッファーから文字列を読み取るが、入力の一部として空白文字を認めず、そのかわりに空白文字は入力を終端させる。引数prompt、initial、inherit-input-methodはread-from-minibuffer
で使用するときと同様。
これは関数read-from-minibuffer
の簡略化されたインターフェイスであり、キーマップminibuffer-local-ns-map
の値をkeymap引数としてread-from-minibuffer
関数に渡す。キーマップminibuffer-local-ns-map
はC-qをリバインドしないので、クォートすることによって文字列内にスペースを挿入することが可能である。
minibuffer-allow-text-properties
の値に関わらず、この関数はテキストプロパティを破棄する。
(read-no-blanks-input prompt initial) ≡ (let (minibuffer-allow-text-properties) (read-from-minibuffer prompt initial minibuffer-local-ns-map))
このビルトイン変数は関数read-no-blanks-input
内でミニバッファーローカルキーマップとして使用されるキーマップである。デフォルトではminibuffer-local-map
のバインディングに加えて、以下のバインディングが有効になる:
exit-minibuffer
exit-minibuffer
self-insert-and-exit
Next: Object from Minibuffer, Previous: Intro to Minibuffers, Up: Minibuffers [Contents][Index]