【问题标题】:when setting up "Slime" in "emacs"(latest version) how do i tell it to load swank faster?在“emacs”(最新版本)中设置“Slime”时,我如何告诉它更快地加载 swank?
【发布时间】:2026-01-04 10:35:02
【问题描述】:

史莱姆手册是这样说的: “加载 Swank 更快 对于 SBCL,我们建议您创建一个支持套接字和 POSIX 的自定义核心文件 包括绑定,因为这些模块加载时间最长。打造这样一个核心, 执行以下步骤:

shell$ sbcl
*(mapc ’require ’(sb-bsd-sockets sb-posix sb-introspect sb-cltl2 asdf))
 *(save-lisp-and-die "sbcl.core-for-slime")

之后,将类似这样的内容添加到您的“.emacs”中:

(setq slime-lisp-implementations
’((sbcl ("sbcl" "--core" "sbcl.core-for-slime"))))"

我知道如何将内容添加到我的 .emacs 文件中,但我究竟要为下面的部分做什么,即在哪里、确切地以及如何执行下面的步骤....我在哪里输入它。 "执行以下步骤:

shell$ sbcl
* (mapc ’require ’(sb-bsd-sockets sb-posix sb-introspect sb-cltl2 asdf))
* (save-lisp-and-die "sbcl.core-for-slime")"

请具体说明...我是菜鸟

【问题讨论】:

    标签: emacs lisp slime sbcl swank


    【解决方案1】:

    我知道如何将东西添加到我的 .emacs 文件中,但我到底要做什么 下面的部分,即我在哪里、确切地以及如何执行这些步骤 下面......我在哪里输入它。 "执行以下步骤:

    你在 shell 中启动你的 Lisp 实现,然后输入它的 REPL。虽然 Slime 是 Emacs 的 Common Lisp(以及其他几种语言)环境,但实际的 CL 实现并不包含在 Emacs 中,也不属于 Emacs 的一部分。 (Emacs 本身使用一种有点相似但不同的方言,Emacs Lisp。)

    所以,你必须单独安装SBCL,启动它,然后在它的REPL中输入上面的命令。

    (mapc #'require '(sb-bsd-sockets sb-posix sb-introspect sb-cltl2 asdf))
    

    请注意,您必须使用',而不是 才能工作。这将在您的 Lisp 映像中加载系统,并且:

    (save-lisp-and-die "sbcl.core-for-slime")
    

    将该图像保存到文件sbcl.core-for-slime 中。当您告诉 SBCL 使用该图像(也称为 core 图像)时,您不必再次加载上述系统,因为它们已经是加载图像的一部分。就是这样

    (setq slime-lisp-implementations
          '((sbcl ("sbcl" "--core" "sbcl.core-for-slime"))))
    

    在你的.emacs 中,它告诉 SLIME 在启动 SBCL 时使用命令 sbcl --core sbcl.core-for-slime

    另外请注意,Common Lisp 是语言的名称,而 CLISP 只是一个实现,如 SBCL。我会相应地重新标记您的问题。

    【讨论】:

      【解决方案2】:

      Shell 是您计算机的命令行界面。在 Emacs 中,您可以通过输入 M-xshell 进入 shell(即,依次按下这些键:Escxshell输入)。将出现一个新窗口,其中有一个 shell 提示符等待您的输入。在提示符处输入sbcl,启动SBCL;然后你可以输入 lisp 代码 sn-ps 来创建一个新的核心。

      要使上述操作生效,您必须先安装 SBCL(例如,按照www.sbcl.org 的说明进行操作)。

      【讨论】: