设置SLIME& Inmaior-Lisp for Emacs中的Clojure

时间:2011-09-01 16:46:26

标签: emacs clojure slime swank

我对Clojure& amp; emacs和我一直在尝试为Clojure设置SLIME。 official documentation隐含地假设您知道您使用emacs做了什么。您可以在配置文件中添加一堆代码。由于我对数据分析的Clojure感兴趣,我真的不想与Leiningen打交道,但我希望得到slime所提供的动态环境。

我已经从/opt/clojure/中的git和/opt/clojure-contrib中的clojure-contrib安装了Clojure,我可以获得一个repl。我在this tutorial之后的`〜/ .bin中安装了来自github的swank-clojure,clojure-mode和slime。通过在官方文档的评论部分添加一些内容,我改变了一些不通用的东西。

当我使用M-x slime开始粘贴时,我会得到一个连续的Polling "/tmp/slime.14113".. (Abort with 'M-x slime-abort-connection'.)

这是我的 init-clj.el

;; clojure-mode
(add-to-list 'load-path "~/.bin/clojure-mode")


;; swank-clojure
(add-to-list 'load-path "~/.bin/swank-clojure")

(setq swank-clojure-jar-path "/opt/clojure/clojure.jar"
  swank-clojure-extra-classpaths (list
                  "~/.bin/swank-clojure/src/swank"
                  "/opt/clojure/clojure-contrib/target/clojure-contrib-1.2.0-SNAPSHOT.jar"))

(require 'swank-clojure)

;; slime
(eval-after-load "slime" 
  '(progn (slime-setup '(slime-repl))))

(add-to-list 'load-path "~/.bin/slime")
(require 'slime)
(eval-after-load 'slime '(setq slime-protocol-version 'ignore))
  (slime-setup '(slime-repl))
(require 'clojure-mode)
(require 'clojure-test-mode)

这是我在 ants.clj 打开时调用时出现的错误:

(progn (load "/home/kca/.bin/slime/swank-loader.lisp" :verbose t) (funcall (read- from-string "swank-loader:init")) (funcall (read-from-string "swank:start-server") "/tmp/slime.14113" :coding-system "iso-latin-1-unix"))

Clojure 1.2.0-master-SNAPSHOT
user=> java.lang.Exception: Unable to resolve symbol: progn in this context (NO_SOURCE_FILE:1)

Inferior Lisp

我在.bin/中创建了一个名为clj-repl的脚本,该脚本包含用于启动repl的java命令。我接着是M-x set-variable inferior-lisp-program /home/wdkrnls/.bin/clj-repl。 Emacs抱怨它的类型错误。

2 个答案:

答案 0 :(得分:5)

使用Clojure的最佳方法是首先安装Leiningen

然后安装Swank Clojure作为Leiningen插件。

接下来,我建议从.emacs剥离当前的自定义Clojure设置,然后安装ELPA,然后在.emacs文件中设置以下初始化代码:

;; Find this line, added by ELPA:
(require 'package)
;; and add the following expression:
(add-to-list 'package-archives
             '("marmalade" . 
               "http://marmalade-repo.org/packages/") t)
;; ... and the rest of the ELPA init code
(package-initialize)

然后,运行package-list-packages并安装clojure-modeslime(和paredit以获得更好的衡量标准),以及您可能想要的任何其他内容。

这应该让你们都准备好在(Leiningen)Clojure项目中使用SLIME。尽管这里的程序看似复杂,但您可以从项目中创建一个“uberjar”,以便在其他服务器上进行部署,绝对没有依赖性麻烦。

答案 1 :(得分:1)

尝试此处详述的方法。在干净的unix或mac盒子上从头开始设置所有内容需要几分钟时间:

http://www.learningclojure.com/2010/08/clojure-emacs-swank-slime-maven-maven.html