Emacs 上的 SLIME with paredit in repl - 如何防止执行不完整但平衡的表达式



我在 emacs 上使用 paredit 和 SLIME's repl。这意味着在我键入 repl 期间的任何时候,我的 s 表达式都是平衡的。

但是,它们可能

不完整,我可能想继续在另一行中键入它们,如下所示:

CL-USER> (defun print-hello ()
            )

但是,当我通过按回车键开始新行时,SLIME repl 会执行我不完整的表达式。我希望它等待我完成表达式,如下所示:

CL-USER> (defun print-hello ()
            (format t "Hello, world"))

请问我该如何做到这一点?

对于这种情况,在 REPL 中编写长 s 表达式时,我认为最好的方法是使用 s.scratch 缓冲区。 您可以对其进行编辑,然后执行

C-J

在缓冲区内按回车键没问题,我正在使用狡猾,但捕获可能是这样的:

(defun print-hello ()
            (format t "Hello, world"))
 ; => PRINT-HELLO

另一种选择是在没有最后一个父级的情况下工作:-(

或者按照 @jkiisky 注释中的建议,键入表达式并在 s 表达式的中间添加C-j

CL-USER> (defun
)

与您的问题相关,Lispy提供了与SLIME的集成。

我通常从不在 REPL 缓冲区中键入任何内容。相反,我编辑源文件中的所有代码,并使用 e 来评估当前的 sexp。

lispy也是paredit的超集,如果你关心兼容性的话。

最新更新