我对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)
我在.bin/
中创建了一个名为clj-repl的脚本,该脚本包含用于启动repl的java命令。我接着是M-x set-variable inferior-lisp-program /home/wdkrnls/.bin/clj-repl。 Emacs抱怨它的类型错误。
答案 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-mode
和slime
(和paredit
以获得更好的衡量标准),以及您可能想要的任何其他内容。
这应该让你们都准备好在(Leiningen)Clojure项目中使用SLIME。尽管这里的程序看似复杂,但您可以从项目中创建一个“uberjar”,以便在其他服务器上进行部署,绝对没有依赖性麻烦。
答案 1 :(得分:1)
尝试此处详述的方法。在干净的unix或mac盒子上从头开始设置所有内容需要几分钟时间:
http://www.learningclojure.com/2010/08/clojure-emacs-swank-slime-maven-maven.html