Common Lisp和Clojure开发的SLIME设置

时间:2011-05-13 13:30:18

标签: emacs clojure common-lisp

我在设置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以便能够修改有问题的设置的方法。

2 个答案:

答案 0 :(得分:4)

似乎刚刚创建了这个问题的解决方案。它被称为jack-in。基本上你只需要做三件事:

  1. 通过git或Marmalade安装clojure-mode
  2. lein plugin install swank-clojure 1.3.1
  3. 从项目中调用M-x clojure-jack-in
  4. 这将自动引导支持的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