【问题标题】:SLIME setup for both Common Lisp and Clojure development用于 Common Lisp 和 Clojure 开发的 SLIME 设置
【发布时间】:2011-08-24 23:00:00
【问题描述】:

我在设置 SLIME 以同时使用 Clojure 和 Common Lisp 时遇到了麻烦。大多数 Clojure 开发人员倾向于使用可通过 ELPA 获得的精简 SLIME,该 SLIME 已被冻结以与 Clojure 兼容。然而,我也做了很多 Common Lisp hacking,而且我通常使用 SLIME CVS 版本(通过 QuickLisp 获得)。

Clojure 的 swank 实现存在一些众所周知的问题 - 它不适用于 autodoc(如果启用了 SLIME 冻结),它不支持模糊完成等某些东西。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 始终为零。 (对于 slime-lisp-implementation-type:connlocal 与本地连接相同)。

我基本上需要的只是一种知道我使用 Clojure 的 swank 运行 SLIME 以便能够修改有问题的设置的方法。

【问题讨论】:

  • 您使用的是什么操作系统?我在 Mac OS X 中得到了这个工作(虽然它也可能在 Linux 中工作)并在这里写了博客 spacemanaki.posterous.com/… 并回答了这个问题 stackoverflow.com/questions/4551283/… 我能让它工作的唯一方法是拥有最新的 CVS SLIME 和ELPA SLIME 并根据我是在使用 Common Lisp 还是 Clojure 加载适当的。
  • 我使用的是 Linux。我知道您提出的解决方案,但我不喜欢它 - 我只想一直使用 CVS SLIME。我可以有一个简单的功能,在我建立 clojure 连接之前切换我需要的东西,但我更愿意找到一种方法将这些设置自动挂钩到 slime 的启动中。
  • 我也不喜欢它,但它有效。我会密切关注这个帖子,看看是否有人提出更好的建议,现在我已经放弃给这只牦牛剃毛了。

标签: emacs clojure common-lisp


【解决方案1】:

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

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

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

更新:

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

【讨论】:

    【解决方案2】:

    这是在 Emacs 中为 Clojure 设置 SLIME 的分步指南(收集自 http://technomancy.us/126 和其他来源)。它不会干扰您现有的 CommonLisp 或 Scheme 设置:

    http://languageagnostic.blogspot.com/2011/05/clojure-in-emacs.html

    【讨论】:

      猜你喜欢
      • 2011-05-24
      • 2013-06-27
      • 2011-11-08
      • 2021-09-12
      • 1970-01-01
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      • 2015-06-04
      相关资源
      最近更新 更多