如何配置 SBCL,以便在 Emacs 中使用“Mx slime”启动它时使用比默认值更多的内存?
从我在网上看到的情况来看,答案似乎是调用 SBCL,传递参数“--dynamic-space-size <size in MB>”。由于我不直接调用 SBCL,我不知道如何传递参数。
我在 Windows 7 上使用 GNU Emacs 22.3.1 和 SBCL 1.0.48。我也没有配置经验,所以新手的介绍将不胜感激。
通常的方法是将变量的值设置为inferior-lisp-program
您要执行的命令,包括您要提供的任何选项。我现在没有 emacs,但这可能就足够了:
(setq inferior-lisp-program "sbcl --dynamic-space-size 1024")
我在 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 一起使用。