Next: , Previous: Text from Minibuffer, Up: Minibuffers


19.3 ミニバッファでのLispオブジェクトの読み取り

本節では、ミニバッファでLispオブジェクトを読み取る関数について述べます。

— Function: read-minibuffer prompt &optional initial

この関数はミニバッファを用いてLispオブジェクトを読み取り、 それを評価せずに返す。 引数promptinitialは、 read-from-minibufferと同様に使われる。

これは関数read-from-minibufferの インターフェイスを単純化したものである。

          (read-minibuffer prompt initial)
          ==
          (read-from-minibuffer prompt initial nil t)

初期入力として文字列"(testing)"を与えた例を示す。

          (read-minibuffer
           "Enter an expression: " (format "%s" '(testing)))
          
          
          ;; 以下のようにミニバッファが表示される
          
          ---------- Buffer: Minibuffer ----------
          Enter an expression: (testing)-!-
          ---------- Buffer: Minibuffer ----------

デフォルトとして初期入力を使うには、ユーザーはただちに<RET>を打てばよい。 あるいは、入力を編集する。

— Function: eval-minibuffer prompt &optional initial

この関数はミニバッファを用いてLisp式を読み取り、 それを評価してその結果を返す。 引数promptinitialは、 read-from-minibufferと同様に使われる。

この関数はread-from-minibufferの インターフェイスを単純化したものである。

          (eval-minibuffer prompt initial)
          ==
          (eval (read-minibuffer prompt initial))
— Function: edit-and-eval-command prompt form

この関数はミニバッファを用いてLisp式を読み取り、それを評価する。 このコマンドとeval-minibufferとの違いは、 初期フォームformを省略できないことであり、 このフォームをテキスト文字列としではなく表示表現に 変換するLispオブジェクトとして扱うことである。 prin1を用いて表示するので、 これが文字列であると初期テキストにはダブルクォート文字(‘"’)が現れる。 see Output Functions

edit-and-eval-commandはまず、promptをプロンプトとして ミニバッファを活性にする。 続いて、ミニバッファにformの表示表現を挿入し、ユーザーに編集させる。 ユーザーがミニバッファから抜けると、 編集後のテキストをreadで読み取り評価する。 評価結果がedit-and-eval-commandの値になる。

以下の例では、すでに正しいフォームである 初期テキストの式をユーザーに提示する。

          (edit-and-eval-command "Please edit: " '(forward-word 1))
          
          
          
          ;; 上の式を評価後には、ミニバッファは以下のようになる
          
          ---------- Buffer: Minibuffer ----------
          Please edit: (forward-word 1)-!-
          ---------- Buffer: Minibuffer ----------

ただちに<RET>を打つと、 ミニバッファから抜けて式を評価するので、 ポイントを1単語分先へ進めることになる。 この例では、edit-and-eval-commandnilを返す。