【问题标题】:How to reinitialise swank?如何重新初始化 swank?
【发布时间】:2015-10-28 16:41:00
【问题描述】:

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

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

我试过了:

  • Clear-REPL (,-) 命令:

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

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

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

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

    两者都未定义。

【问题讨论】:

  • 您到底想达到什么目标?有可能删除函数和宏名称的绑定,并且您可以摆脱整个包。
  • @Daniel-Jour,编辑了这个问题,试图澄清我想要实现的目标。

标签: slimv vim common-lisp swank slimv


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这种方法的一个问题是我使用vimslimv 而不是emacs 和slime,所以M-x … 将不起作用。我会尝试找到如何在vim中输入slime-restart-inferior-lisp,我会检查slime emacs模式的实现,看看slime-restart-inferior-lisp是如何实现的。
    【解决方案3】:

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

    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}>.
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-26
      • 2012-08-24
      • 2018-12-15
      • 2021-11-06
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      • 2019-09-18
      相关资源
      最近更新 更多