假设我有一个emacs缓冲区,其中包含以下文本:
'(1 2 3)
我想将此缓冲区的内容评估为lisp exprerssion(s-expression)。如果我调用(eval(缓冲区字符串)),结果只会被评估为以下字符串:
"'(1 2 3)"
我希望将结果作为lisp语句进行评估。在这个例子中,我希望结果是一个3元素的列表,而不是一个字符串。
我还没弄明白怎么做。有什么想法吗?
非常感谢。
答案 0 :(得分:2)
您可以使用 (eval-buffer)
来评估整个缓冲区。eval-buffer
不是解决方案,因为它总是返回nil
。< /子>
如果您想浏览字符串,可以使用read-from-string
。因为它返回它解析的内容和它停止解析的索引,作为一个cons单元格,你通常想要在其返回值上调用car
:
(eval (car (read-from-string (buffer-string))))