繁体   English   中英

使用leiningen为clojure设置emacs / slime / swank

[英]Setting up emacs/slime/swank for clojure with 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"]])

之后我回到/ tmp / new-project文件夹并运行lein deps然后lein swank下载依赖项并启动lein swank服务器,它提供输出:

Connection opened on local port 4005.

回到emacs是我遇到连接到swank服务器的问题。 我试过打开core.clj文件并运行Mx slime-connect ,它给出了错误:

Symbol's function definition is void: define-slime-contrib

这让我觉得它或者看不到swank服务器正在运行,或者有一些配置需要为它查看服务器。 我也尝试过(打开同一个文件并打开project.clj) Mx 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")

我正在按照http://matthias-schneider.org/docs/clojure-setup/关于emacs包和lein设置的指示,然后开始按照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需要在路径中,请确保。 Ran /.lein/bin/swank-clojure然后打开emacs,打开了project.clj,并尝试了Mx slime-connect ,现在要求我输入主机(本地默认),端口(默认为4005),连接到swank ,给出一个关于swank和slime版本不同(y或n)y的消息,然后minibuffers error in process filter: Lisp connection closed unexpectedly给出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)

更新:解决了,我需要卸载emacs并删除所有/.emacs.d/,而不仅仅是/ elpa /中的包。 重新安装后,我只有clojure模式包,而不是史莱姆或slime-repl。 现在可以连接Mx clojure-jack-in并准备好做一些工作!

我写了一个初学者指南,用于设置Emacs + nREPL客户端,其中包含自动完成和文档弹出,因为大多数旧指令都不合适。 在这里 可能对新手有所帮助。

你不需要安装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,所以你没有删除它。

无需安装lein swank插件。 您可以在project.clj文件中添加依赖项,只需添加lein swankMx slime-connect

试试swank-clojure“1.2.1”,它对我有用。

尝试执行以下操作,这适用于Ubuntu上的Emacs 24:

  1. 安装Leiningen。 确保你安装lein的目录在$PATH
  2. 安装swank-clojure插件:

    lein plugin install swank-clojure 1.3.3

  3. 使用lein new创建一个新项目。 不要将swank-clojure添加到:dev-dependencies (你真的只需要一个或另一个,插件或条目:dev-dependencies 。)

  4. 启动Emacs,确保它可以“看到” $PATH上的lein ,例如:

    PATH=$PATH:/path-to/dir-where/lein-is emacs

    (使用此命令进行试用。为了永久使用,您应该更新.profile文件中的$PATH或在已经位于$PATH上的位置安装lein 。在标准的Ubuntu安装中, ~/bin应该在$PATH 。)

  5. 从项目中打开一个文件,例如project.clj ,然后运行Mx clojure-jack-in 这应该启动Swank服务器并将SLIME REPL连接到它。

当我从旧版本克隆其他人的clojure项目时,这发生在我身上。 他们的project.clj有:

:dev-dependencies [[lein-clojars "0.5.0"]
                   [swank-clojure "1.2.1"]]

这是不正确的,我想,如果你使用Mx clojure-jack-in 删除这些线路,运行lein depslein deps in为我工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM