3

我怎样才能让 swank 忘记所有以前评估过的定义?

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

我试过了:

  • slimv -REPL ( ,-) 命令:

    这似乎只是为了清除屏幕(缓冲区)。

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

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

  • CL-USER>(slime-restart-inferior-lisp)和 `(slimv-restart-inferior-lisp)

    两者都是未定义的。

4

3 回答 3

6

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

于 2015-11-01T11:52:10.440 回答
1

M-x slime-restart-inferior-lisp将从头开始。

于 2015-10-30T11:30:57.920 回答
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}>.

然后你删除你的环境并且你没有这个变量,每次你重新定义包

于 2015-10-30T17:49:13.570 回答