You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Common Lisp中实现SLIME-REPL清屏效果及环境交互?

实现SLIME REPL清屏函数的方案

理想方案:直接调用Emacs原生清屏命令

SLIME自带的slime-eval-in-emacs函数可以在Common Lisp代码里临时执行Emacs的Elisp代码,完全不需要设置全局变量,不会带来未知副作用。直接调用slime-clear-repl-buffer(就是快捷键C-c M-o对应的命令),就能实现和快捷键一模一样的清屏效果:

(defun slime-clear-screen ()
  (slime-eval-in-emacs '(slime-clear-repl-buffer)))

退而求其次:按窗口行数输出换行

如果不想直接调用Emacs命令,可以通过slime-eval-in-emacs获取当前REPL窗口的高度,然后输出对应行数的换行,把原有内容顶出可视区域:

(defun slime-clear-screen-fallback ()
  (let ((window-height (slime-eval-in-emacs '(window-height (get-buffer-window (slime-repl-buffer))))))
    (dotimes (i window-height)
      (format t "~%"))))

说明

这两个方案都不需要额外安装开源库,SLIME本身就提供slime-eval-in-emacs函数,它的作用是在Lisp环境中临时请求Emacs执行指定的Elisp代码,属于函数范围内的调用,不会影响全局环境。

内容的提问来源于stack exchange,提问作者Demihm Seinname

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 17:09:56