emacs:将缓冲区内容评估为s表达式?

时间:2016-11-29 16:12:43

标签: emacs buffer eval s-expression

假设我有一个emacs缓冲区,其中包含以下文本:

'(1 2 3)

我想将此缓冲区的内容评估为lisp exprerssion(s-expression)。如果我调用(eval(缓冲区字符串)),结果只会被评估为以下字符串:

"'(1 2 3)"

我希望将结果作为lisp语句进行评估。在这个例子中,我希望结果是一个3元素的列表,而不是一个字符串。

我还没弄明白怎么做。有什么想法吗?

非常感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用(eval-buffer)来评估整个缓冲区。 eval-buffer不是解决方案,因为它总是返回nil。< /子>

如果您想浏览字符串,可以使用read-from-string。因为它返回它解析的内容和它停止解析的索引,作为一个cons单元格,你通常想要在其返回值上调用car

(eval (car (read-from-string (buffer-string))))