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


19.6.4 高レベルの補完関数

このセクションでは特定の種類の名前を補完つきで読み取る便利な高レベル関数を説明します。

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

Function: read-buffer prompt &optional default require-match predicate

この関数はバッファーの名前を読み取ってそれを文字列でリターンする。プロンプトはprompt。引数defaultはミニバッファーが空の状態でユーザーがexitした場合にリターンされるデフォルト名として使用される。非nilなら文字列、文字列リスト、またはバッファーを指定する。リストならリストの先頭の要素がデフォルト値になる。デフォルト値はプロンプトに示されるが、初期入力としてミニバッファーには挿入されない。

引数promptはコロンかスペースで終わる文字列である。defaultが非nilなら、この関数はデフォルト値つきでミニバッファーから読み取る際の慣習にしたがってコロンの前のpromptの中にこれを挿入する。

オプション引数require-matchcompleting-readのときと同じ。Minibuffer Completionを参照のこと。

オプション引数predicateが非nilなら、それは考慮すべきバッファーをフィルターする関数を指定する。この関数は可能性のある候補を引数として呼び出されて、候補を拒絶するならnil、許容するなら非nilをリターンすること。

以下の例ではユーザーが‘minibuffer.t’とエンターしてから、RETをタイプしている。引数require-matchtであり、与えられた入力で始まるバッファー名は‘minibuffer.texi’だけなので、その名前が値となる。

(read-buffer "Buffer name: " "foo" t)
;; 前の式を評価した後、
;;   空のミニバッファーに
;;   以下のプロンプトが表示される:

---------- Buffer: Minibuffer ----------
Buffer name (default foo): ∗
---------- Buffer: Minibuffer ----------

;; ユーザーがminibuffer.t RETとタイプする
     ⇒ "minibuffer.texi"
User Option: read-buffer-function

この変数が非nilなら、それはバッファー名を読み取る関数を指定する。read-bufferは通常行うことを行うかわりに、read-bufferと同じ引数でその関数を呼び出す。

User Option: read-buffer-completion-ignore-case

この変数が非non-nilなら、バッファー名の読み取りの補完処理においてread-bufferはcaseを無視する。

Function: read-command prompt &optional default

この関数はコマンドの名前を読み取って、Lispシンボルとしてそれをリターンする。引数promptread-from-minibufferで使用される場合と同じ。それが何であれcommandptをリターンすればコマンドであり、コマンド名とはcommandptをリターンするシンボルだということを思い出してほしい。Interactive Callを参照のこと。

引数defaultはユーザーがnull入力をエンターした場合に何をリターンするか指定する。シンボル、文字列、文字列リストを指定できる。文字列ならread-commandはリターンする前にそれをinternする。リストならread-commandはリストの最初の要素をinternする。defaultnilならデフォルトが指定されなかったことを意味する。その場合もしユーザーがnull入力をエンターすると、リターン値は(intern "")、つまり名前が空文字列のシンボルとなる。

(read-command "Command name? ")

;; 前の式を評価した後に、
;;   空のミニバッファーに以下のプロンプトが表示される:

---------- Buffer: Minibuffer ----------
Command name?
---------- Buffer: Minibuffer ----------

ユーザーがforward-c RETとタイプすると、この関数はforward-charをリターンする。

read-command関数はcompleting-readの簡略化されたインターフェイスである。実在するLisp変数のセットを補完するために変数obarray、コマンド名だけを受け入れるために述語commandpを使用する。

(read-command prompt)
≡
(intern (completing-read prompt obarray
                         'commandp t nil))
Function: read-variable prompt &optional default

この変数はカスタマイズ可能な変数の名前を読み取って、それをシンボルとしてリターンする。引数の形式はread-commandの引数と同じ。この関数はcommandpのかわりにcustom-variable-pを述語に使用する点を除いてread-commandと同様に振る舞う。

Command: read-color &optional prompt convert allow-empty display

この関数はカラー指定(カラー名、または#RRRGGGBBBのような形式のRGB16進値)の文字列を読み取る。これはプロンプトにprompt(デフォルトは"Color (name or #RGB triplet):")を表示して、カラー名にたいする補完を提供する(16進RGB値は補完しない)。標準的なカラー名に加えて、補完候補にはポイント位置のフォアグラウンドカラーとバックグラウンドカラーが含まれる。

Valid RGB values are described in Color Names.

この関数のリターン値はミニバッファー内でユーザーがタイプした文字列である。しかしインタラクティブに呼び出されたとき、またはオプション引数convertが非nilなら、入力されたカラー名のかわりにそれに対応するRGB値文字列をリターンする。この関数は入力として有効なカラー指定を求める。allow-emptyが非nilでユーザーがnull入力をエンターした場合は空のカラー名が許容される。

インタラクティブに呼び出されたとき、またはdisplayが非nilなら、エコーエリアにもリターン値が表示される。

User-Chosen Coding Systemsの関数read-coding-systemread-non-nil-coding-system、およびInput Methodsread-input-method-nameも参照されたい。