8

我在带有 SLIME 的 repl 的 emacs 上使用 paredit。这意味着在我在 repl 上打字的任何时候,我的 s 表达式都是平衡的。

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

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

但是,当我通过按 Enter 键开始新行时,SLIME repl 会执行我不完整的表达式。我想让它等我完成表达式,如下:

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

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

4

2 回答 2

2

对于这种情况,在 REPL 中编写长 s 表达式时,我认为最好的方法是使用slime scratch buffer。你可以编辑它,然后执行

Cj

在缓冲区内按 enter 没问题,我正在使用 sly 但捕获可能是这样的:

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

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

或按照@jkiisky 的评论中的建议,输入表达式并添加到 s 表达式的中间C-j

CL-USER> (defun
)
于 2017-11-16T07:38:16.323 回答
1

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

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

lispyparedit如果兼容性是您关心的问题,它也是 的超集。

于 2017-11-17T17:07:40.777 回答