我使用了这样的代码:

(defvar my-defvar "test")
(completing-read "input: " '("1" "2" my-defvar))

然后是M-x eval-region
我在迷你缓冲区中得到了“1”,“2”,my-defvar

我的问题是如何将my-defvar转换为列表中的字符串。

最佳答案

在Lisp中,´ -symbol将引用表达式的其余部分。这意味着该值将完全等于其编写的表达式,不评估函数调用,不使用其值替换变量等。

最简单的方法是使用list函数,在评估其参数后创建一个元素列表,例如:

(completing-read "input: " (list "1" "2" my-defvar))

当然,您也可以使用反引号语法,如另一个答案中所建议。这使您可以引用复杂的表达式,但不引用(即评估)它的部分。但是,在这种简单情况下,我认为这不是完成任务的正确工具。

07-27 22:27