我在设置SLIME以使用Clojure和Common Lisp时遇到了问题。大多数Clojure开发人员倾向于使用通过ELPA提供的剥离下来的粘液,为了与Clojure兼容,ELPA将其冻结。然而,我也做了很多Common Lisp的破解工作,我通常使用SLIME版本(通过QuickLisp获得)。
对于Clojure的swank实现有一些众所周知的问题--它不支持autodoc (如果它启用了黏液冻结),它不支持一些东西,比如模糊补全等等。这个question讨论了同样的问题,答案是我不能去。
(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总是为nil。(slime-lisp-implementation type相同:connlocal local connections)。
我基本上需要的只是一种方法,知道我用Clojure的swank运行SLIME,以便能够修改有问题的设置。
发布于 2011-05-17 16:26:47
似乎这个问题的解决方案是刚刚创建的。它被称为jack-in。基本上你只需要做三件事:
调用M-x clojure-jack-in
这将自动引导所支持的黏液。您不再需要通过ELPA安装它。我已经将Common Lisp init封装在一个交互式函数中,我可以在需要时调用它,因为加载Clojure粘液自然会破坏一些设置。它不像上游Clojure在SLIME中的支持那样是一个理想的解决方案,但它比大多数替代方案要好得多……
更新:
Clojure开发不再需要SLIME。我建议您改用CIDER。
发布于 2011-05-25 18:00:36
这是一个分步指南,介绍如何在Emacs中为Clojure设置粘滞(从http://technomancy.us/126和其他来源收集)。它不会影响您现有的CommonLisp或方案设置:
http://languageagnostic.blogspot.com/2011/05/clojure-in-emacs.html
https://stackoverflow.com/questions/5992626
复制相似问题