在Emacs上同时运行Clojure和其他Lisp

时间:2010-07-27 04:44:59

标签: emacs clojure lisp slime

我使用Aquamacs,而Aquamacs预先配备了SLIME

(setq inferior-lisp-program "/usr/local/bin/sbcl") #####!!!
(add-to-list 'load-path "/Library/Application Support/Aquamacs Emacs/SLIME/contrib")
(add-to-list 'load-path "/Library/Application Support/Aquamacs Emacs/SLIME")
(require 'slime)
(slime-setup)

正如在某处所问,我尝试通过添加此代码来使用Clojure。

(add-to-list 'load-path "~/clojure/clojure-mode")
(setq inferior-lisp-program "/Users/smcho/bin/clj") ################
(require 'clojure-mode)
(setq auto-mode-alist
  (cons '("\\.clj$ . clojure-mode")
     auto-mode-alist))
(add-hook 'clojure-mode-hook
  '(lambda ()
     (define-key clojure-mode-map "\C-c\C-e" 'lisp-eval-last-sexp)))
)

我无法使用SLIME运行Clojure,但我对当前设置感到满意,唯一的问题是由于(setq inferior-lisp-program ...)代码,我必须更改.emacs代码取决于我使用Clojure或SBCL

有什么方法可以解决这个问题吗?我可以在多个(劣质)Lisps之间做出选择吗?

我可以让Clojure在Aquamacs上运行。请参阅 Running Clojure with 'lein swank' on Aquamacs problem 。忘记上面写的设置,如果你想运行Aquamacs / Clojure。您只需要一行,(slime-setup '(slime-repl))lein swank

1 个答案:

答案 0 :(得分:5)

当然,您可以使用 Cu Mx slime 而不是 Mx slime 让SLIME询问您要启动的Lisp可执行文件的名称,无论您是什么默认已经填写。

我还配置了一个slime-lisp-implementations变量:

(setq slime-lisp-implementations
      `((clojure ,(swank-clojure-cmd) :init swank-clojure-init)
        (sbcl ("sbcl") :coding-system utf-8-unix)))

我不得不说我不记得这对我有什么影响了(如果它确实做了什么)......键入C-h v slime-lisp-implementations来大致了解它应该做什么。如果我想开始那么我似乎必须输入sbcl,由于我的SLIME中的Clojure与SBCL比率很高,这对我来说很好。

更新

我刚刚重新发现 M-- Mx slime (第一个键是负面参数的元 - ),它提示slime-lisp-implementations中的一个Lisp实现名称(选项卡完成)然后启动所需的Lisp。使用上面的示例配置, M-- M-x slime sbcl 启动SBCL。

(我觉得这很有用,主要是因为它允许人们配置更复杂的命令来启动Lisp - 例如(sbcl-options ("sbcl" "--an-option" "--another-option") ...)(sbcl-clbuild ("/path/to/clbuild" "lisp") ...) - 并按名称引用它们。)