gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 15:14:56 25 4
gpt4 key购买 nike

简短版本:在使用 lein swank 启动 swank 服务器时运行 M-x slime-connect 或 M-x 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下载依赖项并启动提供输出的 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")

我正在遵循 http://matthias-schneider.org/docs/clojure-setup/ 的指示对于 emacs 包和 lein 设置,然后按照来自 http://riddell.us/ClojureSwankLeiningenWithEmacsOnLinux.html 的测试配置说明开始一旦我在让 M-x 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),说连接到 swank,给出有关 swank 和 slime 版本不同(y 或 n)y 的消息,然后 minibuffers 给出 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-mode 包,而不是 slime 或 slime-repl。现在可以连接 M-x clojure-jack-in并准备做一些工作!

最佳答案

您不需要安装 slime 和 slime-repl:它们已嵌入到 lein 的插件中(参见 jar 内部:swank-clojure-1.4.0-SNAPSHOT.jar\swank\payload)。你只需要安装clojure-mode。

另外,在“重新安装”时,请记住同时删除 $HOME 目录中的隐藏文件夹 .emacs.d,否则它会保留您之前下载的 Emacs 插件。

最后更喜欢clojure-jack-in,而不是slime-connect——仅仅有slime-connect意味着你在Emacs中仍然有一个Slime,所以你没有删除它。

关于emacs - 使用 leiningen 为 clojure 设置 emacs/slime/swank,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7864659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com