如何重新初始化swank?

时间:2015-10-28 16:41:00

标签: vim common-lisp swank slimv

如何让swank忘记之前评估的所有定义?

我希望它取消定义通过评估定义的所有宏,函数和变量(例如,b评估缓冲区)。让它恢复到我重新启动电脑并重新启动swank服务器时的状态。

我试过了:

  • Clear-REPL(,-)命令:

    这只会清除屏幕(缓冲区)。

  • CL-使用者> (swank:restart-server)(来自REPL缓冲区):

    服务器重新启动但它仍会记住我的旧defun和其他定义。

  • CL-使用者> (slime-restart-inferior-lisp)和`(slimv-restart-inferior-lisp)

    两者都未定义。

3 个答案:

答案 0 :(得分:6)

Slimv作者在这里。我添加了一个新命令&#39;退出REPL&#39;瘦身。这通过调用swank:quit-lisp来关闭运行swank服务器的lisp进程,然后关闭REPL缓冲区。你可以使用这个,然后是另一个连接服务器&#39;命令重启REPL。 &#39;退出REPL&#39;的默认映射是<Leader>Q,因此您可以通过<Leader>Q<Leader>c序列重新启动REPL。 请参阅GitHub上的提交44a50afc...或BitBucket上的a8abdbbc...

答案 1 :(得分:2)

M-x slime-restart-inferior-lisp将从头开始重新启动。

答案 2 :(得分:1)

这不能直接解决您的问题,但如果您在重新启动时需要丢失所有变量,那么在单独的程序包中工作应该适合您。

CL-USER> (defpackage :my-separate-package (:use :cl :cl-user :swank))
#<PACKAGE "MY-SEPARATE-PACKAGE">
CL-USER> (in-package :my-separate-package)
#<PACKAGE "MY-SEPARATE-PACKAGE">
MY-SEPARATE-PACKAGE> (defvar a "a")
A
MY-SEPARATE-PACKAGE> a
"a"
MY-SEPARATE-PACKAGE> (in-package :cl-user)
#<PACKAGE "COMMON-LISP-USER">
CL-USER> (in-package :my-separate-package)
#<PACKAGE "MY-SEPARATE-PACKAGE">
MY-SEPARATE-PACKAGE> a
"a"
MY-SEPARATE-PACKAGE> (in-package :cl-user)
#<PACKAGE "COMMON-LISP-USER">
CL-USER> (delete-package :my-separate-package)
T
CL-USER> (defpackage :my-separate-package (:use :cl :cl-user :swank))
#<PACKAGE "MY-SEPARATE-PACKAGE">
CL-USER> a
; Evaluation aborted on #<UNBOUND-VARIABLE A {1004AD9AF3}>.
CL-USER> (in-package :my-separate-package)
#<PACKAGE "MY-SEPARATE-PACKAGE">
MY-SEPARATE-PACKAGE> a
; Evaluation aborted on #<UNBOUND-VARIABLE A {10055C6063}>.

然后,每次重新创建包

时,都会删除环境并且没有这些变量