与leiningen一起为clojure设置emacs/slime/swank

与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启动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新的测试项目
,看起来一切正常。然后我在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很有用:

  • 安装Leiningen。确保安装
    lein
    的目录位于
    $PATH
  • 安装swank clojure插件:

    lein插件安装swank clojure 1.3.3

  • 使用
    lein new
    创建一个新项目。不要将
    swank clojure
    添加到
    :开发依赖项
    。(实际上,您只需要一个插件或
    :dev dependencies
    中的条目)

  • 启动Emacs,确保它可以在
    $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"]]