我在设置SLIME以与Clojure和Common Lisp一起工作时遇到了麻烦。大多数Clojure开发人员倾向于使用通过ELPA提供的剥离SLIME,该SLIM可以冷冻以实现Clojure兼容性。然而,我也做了很多Common Lisp黑客攻击,我通常使用SLIME CVS版本(通过QuickLisp获得)。
Clojure的swank实现存在一些众所周知的问题 - 它不适用于autodoc(如果启用了SLIME冻结),它不支持模糊完成等一些事情。{{3} }讨论了同一个主题,答案表明我不适合。
(add-hook 'slime-connected-hook
(lambda ()
(if (string= (slime-lisp-implementation-type) "Clojure")
(setq slime-use-autodoc-mode nil)
(setq slime-use-autodoc-mode t))
))
(add-hook 'slime-mode-hook
(lambda ()
(if (eq major-mode 'clojure-mode)
(slime-autodoc-mode 0)
(slime-autodoc-mode 1))))
(add-hook 'slime-repl-mode-hook
(lambda ()
(if (string= (slime-lisp-implementation-type) "Clojure")
(progn (setq slime-use-autodoc-mode nil)
(slime-autodoc-mode 0))
(progn (setq slime-use-autodoc-mode t)
(slime-autodoc-mode 1)))))
解决方案在纸面上看起来很棒,但对我来说,slime-lisp-implementation-type总是为零。 (对于slime-lisp-implementation-type:与本地连接connlocal相同)。
我基本上需要的只是一种了解我使用Clojure的swank运行SLIME以便能够修改有问题的设置的方法。
答案 0 :(得分:4)
似乎刚刚创建了这个问题的解决方案。它被称为jack-in。基本上你只需要做三件事:
这将自动引导支持的SLIME。您不再需要通过ELPA安装它。我将Common Lisp init包装在一个交互式函数中,我可以在需要时调用它,因为加载Clojure SLIME会自然地混淆一些设置。它不像SLIME中的上游Clojure支持那样理想,但它比大多数替代方案要好得多......
<强>更新强>
Clojure开发不再需要SLIME。我建议你改用CIDER。
答案 1 :(得分:0)
这是在Emacs中为Clojure设置SLIME的逐步指南(从http://technomancy.us/126和其他来源收集)。它不会干扰您现有的CommonLisp或Scheme设置:
http://languageagnostic.blogspot.com/2011/05/clojure-in-emacs.html