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