次: Reading File Names, 前: Completion Commands, 上: Completion
本節では、特定の種類の名前を補完付きで読み取るための 高レベルの便利な関数について述べます。
多くの場合、これらの関数をLisp関数の途中では呼び出さないでください。
可能な場合には、interactive
の指定で、
コマンドの引数を読み取る操作の一部としてすべてのミニバッファ入力を
行ってください。
See Defining Commands。
この関数はバッファ名を読み取り、文字列として返す。 引数defaultはデフォルトの名前を表し、 ユーザーがミニバッファから空で抜け出したときに返される値である。
nil
以外であるときには、文字列かバッファであること。 これはプロンプトとして現れるが、 ミニバッファには初期入力として挿入されない。existingが
nil
以外であると、 指定した名前は既存のバッファ名であること。 テキストが正しくないとミニバッファから抜ける通常のコマンドは動作せず、 <RET>は正しい名前を探すため補完を行う。 (しかし、defaultが正しいかどうかは検査しない。 ユーザーがミニバッファを空で抜ければ、 なんであろうとdefaultが返される。)以下の例では、ユーザーは`minibuffer.t'と入力してから<RET>を打つ。 引数existingは
t
であり、 入力した名前で始まる唯一のバッファ名は`minibuffer.texi'であるので、 この名前が値になる。(read-buffer "Buffer name? " "foo" t) ;; 上の式を評価すると、ミニバッファは空で ;; つぎのようなプロンプトが表示される ---------- Buffer: Minibuffer ---------- Buffer name? (default foo) -!- ---------- Buffer: Minibuffer ---------- ;; ユーザーはminibuffer.t <RET>と打つ => "minibuffer.texi"
この変数は、バッファ名の読み取り方を指定する。 たとえば、この変数に
iswitchb-read-buffer
を設定すると、 バッファ名を読み取るためにread-buffer
を呼び出す すべてのEmacsコマンドは、 バッファ名を読むためにパッケージiswitchb
を使うようになる。
この関数はコマンド名を読み取り、Lispシンボルとして返す。 引数promptは、
read-from-minibuffer
と同様に使われる。 なんであってもcommandp
がt
を返せばコマンドであり、commandp
がt
を返すシンボルはコマンド名であることに注意。 see Interactive Call。引数defaultは、ユーザー入力が空だった場合に返したい値を指定する。 これは、シンボルか文字列であること。 文字列であると、
read-command
は、これを返すまえにインターンする。 defaultがnil
であると、デフォルトを指定しないことを意味し、 ユーザー入力が空であると戻り値はnil
である。(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))
この関数はユーザー変数の名前を読み取り、シンボルとして返す。
引数defaultは、ユーザー入力が空だった場合に返したい値を指定する。 これは、シンボルか文字列であること。 文字列であると、
read-variable
は、これを返すまえにインターンする。 defaultがnil
であると、デフォルトを指定しないことを意味し、 ユーザー入力が空であると戻り値はnil
である。(read-variable "Variable name? ") ;; 上の式を評価後には、ミニバッファは空で ;; つぎのようなプロンプトが表示される ---------- Buffer: Minibuffer ---------- Variable name? -!- ---------- Buffer: Minibuffer ----------ユーザーがfill-p <RET>と打つと、
read-variable
はfill-prefix
を返す。この関数は
read-command
に似ているが、commandp
のかわりに述語user-variable-p
を使う。(read-variable prompt) == (intern (completing-read prompt obarray 'user-variable-p t nil))
User-Chosen Coding Systemsの関数read-coding-system
や
read-non-nil-coding-system
も参照してください。