ele*_*nt8 6 emacs clojure slime swank leiningen
短版本:使用lein swank启动swank服务器时运行Mx slime-connect或Mx clojure-jack-in时出错.
我在Ubuntu 10.10上使用emacs 24.0.50.1.我在ELPA的emacs中安装了以下软件包:clojure-mode,paredit,slime,slime-repl
我从github安装了leiningen并将其添加到类路径中,然后运行
lein plugin install swank-clojure 1.3.3
.之后我创建了一个新的目录〜/ tmp /,cd进入它并运行:
lein new test-project
这似乎设置一切正常.然后我在emacs中打开了/tmp/new-project/project.clj并将其更改为:
(defproject test-project "1.0.0-SNAPSHOT"
:description "Test Project"
:dependencies [[org.clojure/clojure "1.2.1"]
[org.clojure/clojure-contrib "1.2.0"]]
:dev-dependencies [[swank-clojure "1.3.3"]])
Run Code Online (Sandbox Code Playgroud)
在那之后我又回到在/ tmp /新项目文件夹,跑lein deps
然后lein swank
下载依赖关系,并开始这给输出斯旺克服务器:
Connection opened on local port 4005.
Run Code Online (Sandbox Code Playgroud)
回到emacs是我遇到连接到swank服务器的问题.我试过打开core.clj文件并运行M-x slime-connect
它会产生错误:
Symbol's function definition is void: define-slime-contrib
Run Code Online (Sandbox Code Playgroud)
这让我觉得它或者看不到swank服务器正在运行,或者有一些配置需要为它查看服务器.我也尝试过(打开同一个文件并打开project.clj)M-x clojure-jack-in
我假设尝试在项目文件夹中启动clojure REPL但是它提供了以下内容:
Debugger entered--Lisp error: (error "Could not start swank server: sh: lein: not found
")
signal(error ("Could not start swank server: sh: lein: not found\n"))
error("Could not start swank server: %s" "sh: lein: not found\n")
clojure-jack-in-sentinel(#<process swank> "exited abnormally with code 127\n")
Run Code Online (Sandbox Code Playgroud)
我从以下方向http://matthias-schneider.org/docs/clojure-setup/为emacs的包和雷音设置,然后开始下从测试配置说明http://riddell.us/ClojureSwankLeiningenWithEmacsOnLinux.html一次我有问题让Mx slime-connect打开一个REPL.
更新:
删除〜/ tmp/test-project,卸载emacs和/.emacs.d/elpa/包,重新安装emacs,重新安装clojure-mode和paredit包,将〜/ .lein复制到/ bin以确保没有路径问题(wasn如果/.lein或/.lein/bin需要在路径中,请确保.然/.lein/bin/swank-clojure
,然后打开emacs的,开了project.clj,并试图M-x slime-connect
,现在问我的主机(本地默认),端口(4005默认),表示连接到自吹,给人以约斯旺克和煤泥版本不同消息(y或n)y,那么迷你车就给了error in process filter: Lisp connection closed unexpectedly
.在我运行的终端/.lein/bin/swank-clojure
弹出以下java错误:
exception in read loop
java.lang.NumberFormatException: For input string: " a6"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:470)
at swank.core.protocol$read_swank_message.invoke(protocol.clj:41)
at swank.core.connection$read_from_connection.invoke(connection.clj:59)
at swank.core$read_loop.invoke(core.clj:337)
at swank.swank$connection_serve$fn__1486$fn__1487.invoke(swank.clj:32)
at clojure.lang.AFn.applyToHelper(AFn.java:159)
at clojure.lang.AFn.applyTo(AFn.java:151)
at clojure.core$apply.invoke(core.clj:540)
at swank.swank$connection_serve$fn__1486.doInvoke(swank.clj:29)
at clojure.lang.RestFn.invoke(RestFn.java:397)
at clojure.lang.AFn.run(AFn.java:24)
at java.lang.Thread.run(Thread.java:636)
Run Code Online (Sandbox Code Playgroud)
更新:
解决了,我需要卸载emacs并删除所有/.emacs.d/,而不仅仅是/ elpa /中的包.重新安装后,我只有clojure模式包,而不是史莱姆或slime-repl.现在可以连接M-x clojure-jack-in
并准备做一些工作!
你不需要安装 slime 和 slime-repl:它们嵌入到 lein 的插件中(参见 jar 内部:swank-clojure-1.4.0-SNAPSHOT.jar\swank\payload)。您必须仅安装 clojure 模式。
另外,“重新安装”时,请记住删除 $HOME 目录中的隐藏文件夹 .emacs.d,否则它将保留您之前下载的 Emacs 插件。
最后,更喜欢 clojure-jack-in,而不是 slime-connect - 只要有 slime-connect 就意味着你在 Emacs 中仍然有一个 SLIME,所以你没有删除它。