次: , 前: Completion Commands, 上: Completion


19.5.4 高レベルの補完関数

本節では、特定の種類の名前を補完付きで読み取るための 高レベルの便利な関数について述べます。

多くの場合、これらの関数をLisp関数の途中では呼び出さないでください。 可能な場合には、interactiveの指定で、 コマンドの引数を読み取る操作の一部としてすべてのミニバッファ入力を 行ってください。 See Defining Commands

— 機能: read-buffer prompt &optional default existing

この関数はバッファ名を読み取り、文字列として返す。 引数defaultはデフォルトの名前を表し、 ユーザーがミニバッファから空で抜け出したときに返される値である。 nil以外であるときには、文字列かバッファであること。 これはプロンプトとして現れるが、 ミニバッファには初期入力として挿入されない。

existingnil以外であると、 指定した名前は既存のバッファ名であること。 テキストが正しくないとミニバッファから抜ける通常のコマンドは動作せず、 <RET>は正しい名前を探すため補完を行う。 (しかし、defaultが正しいかどうかは検査しない。 ユーザーがミニバッファを空で抜ければ、 なんであろうとdefaultが返される。)

以下の例では、ユーザーは`minibuffer.t'と入力してから<RET>を打つ。 引数existingtであり、 入力した名前で始まる唯一のバッファ名は`minibuffer.texi'であるので、 この名前が値になる。

          (read-buffer "Buffer name? " "foo" t)
          
          
          
          ;; 上の式を評価すると、ミニバッファは空で
          ;; つぎのようなプロンプトが表示される
          
          ---------- Buffer: Minibuffer ----------
          Buffer name? (default foo) -!-
          ---------- Buffer: Minibuffer ----------
          
          
          ;; ユーザーはminibuffer.t <RET>と打つ
               => "minibuffer.texi"
     
— 変数: read-buffer-function

この変数は、バッファ名の読み取り方を指定する。 たとえば、この変数にiswitchb-read-bufferを設定すると、 バッファ名を読み取るためにread-bufferを呼び出す すべてのEmacsコマンドは、 バッファ名を読むためにパッケージiswitchbを使うようになる。

— 機能: read-command prompt &optional default

この関数はコマンド名を読み取り、Lispシンボルとして返す。 引数promptは、read-from-minibufferと同様に使われる。 なんであってもcommandptを返せばコマンドであり、 commandptを返すシンボルはコマンド名であることに注意。 see Interactive Call

引数defaultは、ユーザー入力が空だった場合に返したい値を指定する。 これは、シンボルか文字列であること。 文字列であると、read-commandは、これを返すまえにインターンする。 defaultnilであると、デフォルトを指定しないことを意味し、 ユーザー入力が空であると戻り値はnilである。

          (read-command "Command name? ")
          
          
          
          ;; 上の式を評価後には、ミニバッファは空で
          ;; つぎのようなプロンプトが表示される
          
          ---------- Buffer: Minibuffer ----------
          Command name?
          ---------- Buffer: Minibuffer ----------
     

ユーザーがforward-c <RET>と打つと、 この関数はforward-charを返す。

関数read-commandcompleting-readのインターフェイスを 単純化したものである。 既存のLispシンボルの集まりから補完するために変数obarrayを使い、 コマンド名のみを対象とするために述語commandpを使う。

          (read-command prompt)
          ==
          (intern (completing-read prompt obarray
                                   'commandp t nil))
     
— 機能: read-variable prompt &optional default

この関数はユーザー変数の名前を読み取り、シンボルとして返す。

引数defaultは、ユーザー入力が空だった場合に返したい値を指定する。 これは、シンボルか文字列であること。 文字列であると、read-variableは、これを返すまえにインターンする。 defaultnilであると、デフォルトを指定しないことを意味し、 ユーザー入力が空であると戻り値はnilである。

          (read-variable "Variable name? ")
          
          
          
          
          ;; 上の式を評価後には、ミニバッファは空で
          ;; つぎのようなプロンプトが表示される
          
          ---------- Buffer: Minibuffer ----------
          Variable name? -!-
          ---------- Buffer: Minibuffer ----------
     

ユーザーがfill-p <RET>と打つと、 read-variablefill-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-systemread-non-nil-coding-systemも参照してください。