设置SLIME&;Emacs中Clojure的下Lisp 粘液
我对Clojure和emacs都是新手,我一直在尝试为Clojure设置SLIME。隐式地假设您知道如何使用emacs。您可以在配置文件中插入的不仅仅是一堆代码。由于我对Clojure进行数据分析感兴趣,如果可能的话,我真的不想与Leiningen打交道,但我想要slime提供的动态环境 我已经从git在设置SLIME&;Emacs中Clojure的下Lisp 粘液,emacs,clojure,slime,swank,Emacs,Clojure,Slime,Swank,我对Clojure和emacs都是新手,我一直在尝试为Clojure设置SLIME。隐式地假设您知道如何使用emacs。您可以在配置文件中插入的不仅仅是一堆代码。由于我对Clojure进行数据分析感兴趣,如果可能的话,我真的不想与Leiningen打交道,但我想要slime提供的动态环境 我已经从git在/opt/Clojure/中安装了Clojure,在/opt/Clojure-contrib中安装了Clojure-contrib,我可以获得一个repl。我在下面的`~/.bin中安装了来自g
/opt/Clojure/
中安装了Clojure,在/opt/Clojure-contrib
中安装了Clojure-contrib,我可以获得一个repl。我在下面的`~/.bin中安装了来自github的swank clojure、clojure模式和slime。当这不起作用时,我改变了一些事情,从官方文档的评论部分添加了一些东西
当我用M-x slime
启动slime时,我得到一个连续的轮询/tmp/slime.14113“。。(使用“M-x slime中止连接”中止)。
这是我的初始化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/
中编写了一个名为cljrepl的脚本,它保存了启动repl的java命令。然后,我将M-x设置为lisp程序/home/wdkrnls/.bin/clj repl。Emacs抱怨它的类型错误。使用Clojure的最佳方法是从安装开始
然后作为Leiningen插件安装
接下来,我建议从.emacs
中剥离当前的自定义Clojure设置,然后安装,然后在.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模式
和slime
(以及paredit
),以及您可能需要的任何其他软件
这应该让你们所有人都设置好并准备好在(莱宁根)Clojure项目中使用SLIME。尽管这里的过程看起来很复杂,但您可以从项目中创建一个“uberjar”来部署到其他服务器上,而无需任何依赖性方面的麻烦。尝试此处详述的方法。在干净的unix或mac机箱上从头开始设置所有内容需要几分钟:
关于劣质lisp设置:如果正在执行
M-x设置变量劣质lisp程序
,后跟脚本路径,请确保将路径用双引号括起来;否则,它将不会作为字符串读入,Emacs将抱怨结果类型(可能是符号)。如果这没有帮助,你能提供一些关于你的脚本和你在Emacs(或~/.Emacs
/~/.Emacs.d/init.el
)中做什么的更多细节来将它设置为你的低级lisp程序吗?谢谢Michal。现在它开始工作了。我有两个问题,第一个是你说的。第二个是,当我在脚本的路径上加引号时,我没有杀死旧的低级lisp进程,因此看起来好像发生了其他事情。谢谢你详细的回复John,但我对学习Clojure的功能感兴趣。所以我不需要在服务器上部署任何东西。如果可以设置emacs+slime+clojure模式,而不必费心定义一个“项目”,那将是非常理想的。有了Clojure,建立一个列宁根项目就很容易建立Slime。我建议您这样做,即使您只是使用它来引导到repl。基本上,您可以创建一个空项目,只需在命令提示符下单击“lein swank”,就可以了。您可以在没有项目的情况下使用lein repl
和lein swank
(它将设置一个类路径,在.lib/
目录中加载JAR,在.src/
目录中加载Clojure代码),但是创建一个项目就像创建一个新项目一样容易。Swank Clojure文档说这个项目已经被弃用了,应该可以使用nREPL。nREPL更易于安装,因为您可以使用包管理器。