本节描述用于通过迷你缓冲读取 Lisp 对象的函数。
该函数使用迷你缓冲读取一个 Lisp 对象,不进行求值直接返回。参数 prompt 和 initial 的用法与 read-from-minibuffer 相同。
这是对 read-from-minibuffer 的简化接口:
(read-minibuffer prompt initial) ≡ (let (minibuffer-allow-text-properties) (read-from-minibuffer prompt initial nil t))
下面示例中,我们提供字符串 "(testing)" 作为初始输入:
(read-minibuffer
"Enter an expression: " (format "%s" '(testing)))
;; Here is how the minibuffer is displayed:
---------- Buffer: Minibuffer ---------- Enter an expression: (testing)∗ ---------- Buffer: Minibuffer ----------
用户可直接按 RET 使用初始输入作为默认值,也可编辑后再输入。
该函数使用迷你缓冲读取一个 Lisp 表达式,对其求值并返回结果。参数 prompt 和 initial 的用法与 read-from-minibuffer 相同。
该函数仅对 read-minibuffer 的调用结果进行求值:
(eval-minibuffer prompt initial) ≡ (eval (read-minibuffer prompt initial))
该函数在迷你缓冲中读取 Lisp 表达式,求值并返回结果。它与 eval-minibuffer 的区别在于:初始 form 不是可选参数,且被当作 Lisp 对象转换为打印表示,而非文本字符串。它使用 prin1 打印,因此如果是字符串,初始文本中会出现双引号(‘"’)。See 输出函数。
下面示例中,我们向用户提供一个初始内容已是合法表达式的输入:
(edit-and-eval-command "Please edit: " '(forward-word 1)) ;; After evaluation of the preceding expression, ;; the following appears in the minibuffer:
---------- Buffer: Minibuffer ---------- Please edit: (forward-word 1)∗ ---------- Buffer: Minibuffer ----------
直接按 RET 会退出小缓冲并求值该表达式,从而将光标向前移动一个单词。