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


19.2 Reading Text Strings with the Minibuffer

ミニバッファー入力にたいする基本的なプリミティブはread-from-minibufferで、これは文字列とLispオブジェクトの両方からテキスト表現されたフォームを読み取ることができます。関数read-regexpは、特別な種類の文字列である正規表現式(Regular Expressionsを参照)の読み取りに使用されます。コマンドや変数、ファイル名などの読み取りに特化した関数もあります(Completionを参照)。

ほとんどの場合では、Lisp関数の途中でミニバッファー入力関数を呼び出すべきではありません。かわりにinteractive指定されたコマンドの引数読み取りの一部として、すべてのミニバッファー入力を行います。Defining Commandsを参照してください。

Function: read-from-minibuffer prompt &optional initial keymap read history default inherit-input-method

この関数は、ミニバッファーから入力を取得するもっとも一般的な手段である。デフォルトでは、任意のテキストを受け入れて、それを文字列としてリターンする。しかし、readが非nilの場合は、テキストをLispオブジェクトに変換するためにreadを使用する(Input Functionsを参照)。

この関数が最初に行うのは、ミニバッファーをアクティブにして、プロンプトにprompt(文字列でなければならない)を用いてミニバッファーを表示することである。その後に、ユーザーはミニバッファーでテキストを編集できる。

ミニバッファーをexitするためにユーザーがコマンドをタイプするとき、read-from-minibufferはミニバッファー内のテキストからリターン値を構築する。通常はそのテキストを含む文字列がリターンされる。しかし、readが非nilの場合、read-from-minibufferはテキストを読み込んで結果を未評価のLispオブジェクトでリターンする。(読み取りについての詳細は、See Input Functionsを参照のこと。)

引数defaultは、ヒストリーコマンドを通じて利用できるデフォルト値を指定する。値には文字列、文字列リスト、またはnilを指定する。文字列または文字列リストは、ユーザーがM-nで利用可能な“未来のヒストリー(future history)”になります。

readが非nilの場合は、ユーザーの入力が空のときのreadの入力としても、defaultが使用される。defaultが文字列リストの!は、最初の文字列が入力として使用される。defaultnilの場合、空の入力はend-of-fileエラーとなる。しかし通常(readnil)の場合には、ユーザーの入力が空のときread-from-minibufferdefaultを無視して、空文字列""をリターンする。この点において、この関数はこのチャプターの他のどのミニバッファー入力関数とも異なる。

keymapが非nilの場合、そのキーマップはミニバッファー内で使用されるローカルキーマップとなる。keymapが省略、またはnilの場合は、minibuffer-local-mapの値がキーマップとして使用される。キーマップの指定は、補完のようなさまざまなアプリケーションにたいしてミニバッファーをカスタマイズする、もっとも重要な方法である。

引数historyは、入力の保存やミニバッファー内で使用されるヒストリーコマンドが使用するヒストリーリスト変数を指定する。デフォルトはminibuffer-historyである。同様に、オプションでヒストリーリスト内の開始位置を指定できる。Minibuffer Historyを参照のこと。

変数minibuffer-allow-text-propertiesが非nilの場合には、リターンされる文字列にはミニバッファーでのすべてのテキストプロパティが含まれる。それ以外では、値がリターンされるときすべてのテキストプロパティが取り除かれる。

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

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

Function: read-string prompt &optional initial history default inherit-input-method

この関数はミニバッファーから文字列を読み取り、それをリターンする。引数promptinitialhistoryinherit-input-methodread-from-minibufferで使用する場合と同様。使用されるキーマップはminibuffer-local-mapである。

オプション引数defaultread-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))
Function: read-regexp prompt &optional defaults history

この関数はミニバッファーから文字列として正規表現を読み取り、それをリターンする。ミニバッファーのプロンプト文字列promptが‘:’(とその後にオプションの空白文字)で終端されていない場合、この関数はデフォルトのリターン値(空文字列でない場合。以下参照)の前に‘: ’を付加する。

オプション引数defaultsは、入力が空の場合にリターンするデフォルト値を制御する。値は文字列、nil(空文字列と等価)、文字列リスト、シンボルのうちのどれか。

defaultsがシンボルの場合、read-regexpは変数read-regexp-defaults-function(以下参照)の値を調べて非nilのときは、defaultsよりそちらを優先的に使用する。この場合、値は以下のいずれか:

これで、read-regexpdefaultsを処理した結果はリストに確定する(値がnilまたは文字列の場合は1要素のリストに変換する)。このリストにたいし、read-regexpは、以下のような入力として有用な候補をいくつか追加する:

これで関数は、ユーザー入力を取得するためにread-from-minibufferに渡す正規表現のリストを得た。リストの最初の要素は入力が空の場合のデフォルト値である。リストのすべての要素は“未来のミニバッファーヒストリーリスト(future minibuffer history list)” (see future list in The GNU Emacs Manualを参照)としてユーザーが利用可能になる。

オプション引数historyが非nilの場合、それは使用するミニバッファーヒストリーリストを指定するシンボルである(Minibuffer Historyを参照)。これが省略、またはnilの場合、ヒストリーリストのデフォルトはregexp-historyとなる。

Variable: read-regexp-defaults-function

関数read-regexpは、デフォルトの正規表現リストを決定するために、この変数の値を使用するかもしれない。非nilの場合、この変数は以下のいずれかである:

これらの変数の使い方についての詳細は、上述のread-regexpを参照のこと。

Variable: minibuffer-allow-text-properties

この変数がnilの場合、read-from-minibufferおよびread-stringはミニバッファー入力をリターンする前に、すべてのテキストプロパティを取り除く。しかしread-no-blanks-input(以下参照)、同様に補完つきでミニバッファー入力を行うread-minibufferおよびそれに関連する関数(Reading Lisp Objects With the Minibufferを参照)は、この変数の値に関わらず、無条件でテキストプロパティを破棄する。

Variable: minibuffer-local-map

これはミニバッファーからの読み取りにたいするデフォルトローカルキーマップである。デフォルトでは以下のバインディングをもつ:

C-j

exit-minibuffer

RET

exit-minibuffer

C-g

abort-recursive-edit

M-n
DOWN

next-history-element

M-p
UP

previous-history-element

M-s

next-matching-history-element

M-r

previous-matching-history-element

Function: read-no-blanks-input prompt &optional initial inherit-input-method

この関数はミニバッファーから文字列を読み取るが、入力の一部として空白文字を認めず、かわりに空白文字は入力を終端させる。引数promptinitialinherit-input-methodread-from-minibufferで使用するときと同様。

これは関数read-from-minibufferの簡略化されたインターフェイスであり、キーマップminibuffer-local-ns-mapの値をkeymap引数として、read-from-minibuffer関数に渡す。キーマップminibuffer-local-ns-mapC-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))
Variable: minibuffer-local-ns-map

このビルトイン変数は関数read-no-blanks-input内でミニバッファーローカルキーマップとして使用されるキーマップである。デフォルトでは、minibuffer-local-mapのバインディングに加えて、以下のバインディングが有効になる:

SPC

exit-minibuffer

TAB

exit-minibuffer

?

self-insert-and-exit


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