Emacs *用粘液刮*缓冲液

Emacs *用粘液刮*缓冲液,emacs,lisp,slime,Emacs,Lisp,Slime,我意识到SLIME是高级Lisp交互模式,但我想知道是否有一个“Lisp交互”缓冲区可以与普通Lisp一起工作,比如*scratch*缓冲区可以与Emacs Lisp一起工作。也就是说,点击表单末尾的C-j将在当前缓冲区中插入该表单的结果 我问这个问题是因为我发现这种方式比使用repl更容易根据需要编辑输出。将此函数绑定到C-j会产生我想要的行为: (defun slime-eval-print-last-sexp () (interactive) (newline) (insert

我意识到SLIME是高级Lisp交互模式,但我想知道是否有一个“Lisp交互”缓冲区可以与普通Lisp一起工作,比如*scratch*缓冲区可以与Emacs Lisp一起工作。也就是说,点击表单末尾的C-j将在当前缓冲区中插入该表单的结果


我问这个问题是因为我发现这种方式比使用repl更容易根据需要编辑输出。

将此函数绑定到C-j会产生我想要的行为:

(defun slime-eval-print-last-sexp ()
  (interactive)
  (newline)
  (insert (cadr (slime-eval `(swank:eval-and-grab-output ,(slime-last-expression)))))
  (newline))
有M-x
slime scratch
RET,尽管我没有 因为我使用

然而,C-uC-xC-e做你想做的事
*刮伤*
*粘液刮伤*

It is bound to C-x C-e.

(eval-last-sexp EVAL-LAST-SEXP-ARG-INTERNAL)

Evaluate sexp before point; print value in minibuffer.
Interactively, with prefix argument, print output into current buffer.
Truncates long output according to the value of the variables
`eval-expression-print-length' and `eval-expression-print-level'.

(它是
slime eval last expression
*slime scratch*
缓冲区中的
slime eval last expression
已存在于
slime
中,其行为与
eval last sexp
相同。slime eval last expression不返回其输出,只将其打印到迷你缓冲区。我不得不寻找得到实际计算输出的方法,并得出了上面的结论。看起来这已经存在于slime eval print last表达式中,但我没有找到它,它也没有打印最后的换行符,但它非常接近。我在slime文档中查找,试图找到类似slime scratch的东西,但找不到。很明显,谢谢。