11

如何配置 SBCL,以便在 Emacs 中使用“Mx slime”启动它时使用比默认值更多的内存?

从我在网上看到的情况来看,答案似乎是调用 SBCL,传递参数“--dynamic-space-size <size in MB>”。由于我不直接调用 SBCL,我不知道如何传递参数。

我在 Windows 7 上使用 GNU Emacs 22.3.1 和 SBCL 1.0.48。我也没有配置经验,所以新手的介绍将不胜感激。

4

2 回答 2

13

通常的方法是将变量的值设置为inferior-lisp-program您要执行的命令,包括您要提供的任何选项。我现在没有 emacs,但这可能就足够了:

(setq inferior-lisp-program "sbcl --dynamic-space-size 1024")
于 2011-08-24T20:14:02.853 回答
13

我在 Debian 挤压上使用 SLIME 1:20120420-2。Kilian Foth答案在这个版本中不起作用。我写信给 slime-devel 并被告知

只要你没有在
~/.emacs 中使用 slime-lisp-implementations,设置 lower-lisp-program 就可以了。
如果你使用 slime-lisp-implementations,你必须修改
这个变量,因为如果
slime-lisp-implementations 不是 nil,slime 会忽略 suberial-lisp-program:

(setq slime-lisp-implementations                                                                                                                                                   
      '((sbcl ("sbcl" "--dynamic-space-size" "1024"))))

因此,如果要检查的值slime-lisp-implementations是什么

只需评估变量slime-lisp-implementations,例如使用 Mx
eval-expression。如果它为 nil 或未绑定,则不会使用它。

事实证明,slime-lisp-implementations对我来说价值是

(("sbcl" ("sbcl")) ("clisp" ("clisp")) ("ecl" ("ecl")) ("cmucl" ("cmucl")))   

所以,我把以下内容放在我的~/.emacs

(setq slime-lisp-implementations '(("sbcl" ("sbcl" "--dynamic-space-size" "1024")) ("clisp" ("clisp")) ("ecl" ("ecl")) ("cmucl" ("cmucl"))))

关于设置的位置

如果你想弄清楚是谁或什么设置了它的值
,还要检查 /etc/emacs/site-lisp/ 或 /usr/share/emacs/site-lisp/

在这个版本的 SLIME 中,slime-lisp-implementations设置为/usr/share/emacs/site-lisp/slime/slime.el.

有关 的文档slime-lisp-implementations,请参阅 Slime 手册:2.5.2 Multiple Lisps
或使用 Mx describe-variable。

以上所有引用均来自用于 SBCL 的线程设置堆大小,用于 在 slime-devel 上与 SLIME 一起使用。

于 2012-06-03T17:49:05.370 回答