我为clojure和常见的lisp设置了emacs,但我也希望(slime-setup'(slime-fancy))用于常见的lisp.如果我将该行添加到init.el,clojure将无法工作:它给了我repl,但它在我运行任何代码后挂起.
对于clojure:
对于常见的lisp,我将它放在init.el中的ELPA代码之后:
(add-to-list 'load-path "~/.elisp/slime")
(require 'slime)
(add-to-list 'slime-lisp-implementations '(sbcl ("/opt/local/bin/sbcl") :coding-system utf-8-unix))
;; (slime-setup '(slime-fancy))
Run Code Online (Sandbox Code Playgroud)
因此,如果我取消注释最后一行,clojure将被破坏.但是,对于黑客攻击常见的口齿不清而言,这是一个非常重要的元包.
有没有办法在不改变配置的情况下将它们设置为工作并在需要切换语言时重新启动?
我发现slime-autodoc装有粘液花式是导致挂起的原因.
(slime-setup '(slime-fancy))
(setq slime-use-autodoc-mode nil)
Run Code Online (Sandbox Code Playgroud)
此配置允许运行常见的lisp和clojure SLIME.甚至同时.但没有史莱姆 - autodoc.
我也发现我正在使用SLIME的CVS版本,因为我在ELPA代码之后手动执行(add-to-list'load-path"〜/ .elisp/slime").这并没有解决问题.也许有一个魔法约会的版本与clojure一起使用?在这里,一个人说CVS版适合他:http://www.youtube.com/watch?v = f_xI3fZdIg&feature = player_detailpage#t = 221s
我一直在设置SLIME以与Clojure和Common Lisp一起工作时遇到麻烦.大多数Clojure开发人员倾向于使用通过ELPA提供的剥离SLIME,该SLIM可以冷冻以实现Clojure兼容性.但是,我也做了很多Common Lisp黑客攻击,我通常使用SLIME CVS版本(通过QuickLisp获得).
Clojure的swank实现有一些众所周知的问题 - 它不适用于autodoc(如果它启用了SLIME冻结),它不支持像模糊完成等一些东西.这个问题讨论了相同的主题回答建议有一个不适合我.
(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)))))
Run Code Online (Sandbox Code Playgroud)
解决方案在纸面上看起来很棒,但对我来说,slime-lisp-implementation-type总是为零.(对于slime-lisp-implementation-type:与本地连接connlocal相同).
我基本上需要的只是一种方式来了解我使用Clojure的swank运行SLIME以便能够修改有问题的设置.