与leiningen一起为clojure设置emacs/slime/swank
简短版本:使用lein swank启动swank服务器时,运行M-x slime connect或M-x clojure插孔时出错 我在Ubuntu 10.10上使用emacs 24.0.50.1。我已经从ELPA在emacs中安装了以下软件包:clojure模式、paredit、slime、slime repl 我从github安装了leiningen并将其添加到类路径中,然后运行与leiningen一起为clojure设置emacs/slime/swank,emacs,clojure,slime,swank,leiningen,Emacs,Clojure,Slime,Swank,Leiningen,简短版本:使用lein swank启动swank服务器时,运行M-x slime connect或M-x clojure插孔时出错 我在Ubuntu 10.10上使用emacs 24.0.50.1。我已经从ELPA在emacs中安装了以下软件包:clojure模式、paredit、slime、slime repl 我从github安装了leiningen并将其添加到类路径中,然后运行 lein插件安装swank clojure 1.3.3。 之后,我创建了一个新目录~/tmp/,将cd放入其中并
lein插件安装swank clojure 1.3.3
。
之后,我创建了一个新目录~/tmp/,将cd放入其中并运行:
lein新的测试项目
,看起来一切正常。然后我在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项目文件夹,运行lein-deps
,然后lein-swank
下载依赖项并启动swank服务器,该服务器提供以下输出:
Connection opened on local port 4005.
回到emacs,我遇到了让它连接到swank服务器的问题。我尝试打开core.clj文件并运行M-x slime connect
,这会导致错误:
Symbol's function definition is void: define-slime-contrib
这让我觉得它要么没有看到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")
更新:
解决了这个问题,我需要卸载emacs并删除所有的/.emacs.d/,而不仅仅是/elpa/中的包。重新安装后,我只得到clojure模式包,而不是slime或slime repl。现在可以连接
M-x clojure插孔了
,我已经准备好做一些工作了 无需安装lein swank插件。您可以在project.clj文件中添加依赖项,只需lein swank
&M-x slime connect
尝试使用swank clojure“1.2.1”,它对我很有用。尝试执行以下操作,这对我在Ubuntu上使用Emacs 24很有用:
lein
的目录位于$PATH
上李>
lein插件安装swank clojure 1.3.3
lein new
创建一个新项目。不要将swank clojure
添加到:开发依赖项
。(实际上,您只需要一个插件或:dev dependencies
中的条目)$PATH
上“查看”lein
,例如:
PATH=$PATH:/PATH到/dir,其中/lein是emacs
(使用此命令进行尝试。要永久使用,您应该更新.profile
文件中的$PATH
,或者将lein
安装在$PATH
上的位置。在标准Ubuntu安装中,~/bin
应该位于$PATH
上)project.clj
,然后在中运行M-x clojure jack
。这将启动Swank服务器并将SLIME REPL连接到它您不需要安装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,所以你没有删除它。这发生在我身上,当时我从一个旧版本克隆了其他人的clojure项目。他们的project.clj有:
:dev-dependencies [[lein-clojars "0.5.0"]
[swank-clojure "1.2.1"]]
我认为,如果您使用的是
M-x clojure jack in
,这是不正确的。删除这些行,运行lein-deps
并顶入对我来说很有效。我编写了一个初学者指南,介绍如何设置带有自动完成和文档弹出窗口的Emacs+nREPL客户端,因为大多数旧说明都不适用。可用。可能对新手有帮助。在project.clj中更改为“1.2.1”,运行lein deps
,ls在lib/dev/中显示“1.2.1”,lein swank
,&M-x slime connect
给出了相同的错误。感谢您的尝试,尽管我只是使用较新的版本,因为我不确定emacs 24是否会在较旧的版本中出现问题。请卸载插件并重试。。您可以参考swank clojure github帐户中的已知问题:使用lein plugin uninstall swank clojure 1.3.3
(~/.lein/plugins现在为空),在项目文件夹中运行lein deps
&lein swank
,M-x slime connect
和M-x clojure插孔
仍然给出相同的错误。我现在注意到,当运行lein swank时,它给出了:user=>在本地端口4005上打开的连接
,而不是原来的一行post@element8:正确!收到上述信息后,请连接M-x slime!我做了,但它仍然在原始帖子中给出相同的错误消息。你认为这可能是我从ELPA下载的软件包造成的吗?谢谢,我想我离这里很近了,但还是不太近。我按照您的指示,用PATH=$PATH:/home/element8/.lein emacs snapshot
启动了emacs。在emacs中,我打开了/tmp/test-project中的project.clj,并尝试了M-x clojure-jack-in
,它在minibuffer中给出:开始swank…
然后快速加载
一些东西,我看不清所有内容,但它看起来像/emacs.d/,然后给出了相同的错误Symbol的函数定义无效:define slime contrib
我还尝试将~/.lein复制到/bin中,它给出了与上面相同的错误,我想我将尝试重新安装emacs并再次获取包,以确保这不是问题。rei
:dev-dependencies [[lein-clojars "0.5.0"]
[swank-clojure "1.2.1"]]