Common Lisp和Clojure开发的SLIME设置

Boz*_*sov 9 emacs clojure common-lisp

我一直在设置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以便能够修改有问题的设置.

Boz*_*sov 4

看来这个问题的解决方案刚刚诞生。这就是所谓的插口。基本上你只需要做三件事:

  1. 通过 git 或 Marmalade 安装 clojure-mode
  2. lein 插件安装 swank-clojure 1.3.1
  3. 从项目中调用 Mx clojure-jack-in

这将自动引导支持的 SLIME。您不再需要通过 ELPA 安装它。我将 Common Lisp init 包装在一个交互式函数中,我可以在需要时调用它,因为加载 Clojure SLIME 自然会弄乱一些设置。它不像 SLIME 中上游 Clojure 支持那样理想的解决方案,但它比大多数替代方案要好得多......

更新:

Clojure 开发不再需要 SLIME。我建议你改用CIDER