emacs - 让 Emacs 24 运行 SLIME 和 Clojure 调试工具包 (CDT) 的问题

标签 emacs clojure eclipse-cdt slime

我试图让 Slime 与 CDT 和 emacs 24 一起工作,但无济于事,希望得到建议。

1) 我确实让 clojure-jack-in 运行,但只有当我将 swank-clojure 1.3.3 作为 lein 插件加载时,如 github swank-clojure 页面中所述,https://github.com/technomancy/swank-clojure .

2) 我试图按照 George Jahad 在 http://georgejahad.com/clojure/swank-cdt.html 中的描述加载 swank-clojure 1.4.0-SNAPSHOT (使用 Clojure 1.2.1),但我无法 clojure-jack-in 运行。我遇到了与下面 3) 中描述的相同的错误。

3) 最近,我尝试复制 technomancy.us 网站上的概念验证短视频的结果,在“随之而来的彻底简化”,http://technomancy.us/149 .在这个方法中,我加载了 swank-clojure 1.4.0-SNAPSHOT 作为 lein 插件并确认它已加载到 ~/.lein/plugins/swank-clojure-1.4.0-SNAPSHOT.jar .当我创建一个新的 lein 项目时,lein deps就可以了,在emacs中打开项目的core.clj文件,然后执行M-x clojure-jack-in ,而不是获得 REPL,我在 emacs 迷你缓冲区中收到以下错误:

error in process filter: Search failed: "(run-hooks 'slime-load-hook) ;
on port"

请注意,错误字符串的结尾不包括端口号。除非这是对较长错误字符串的任意截断,否则缺少端口号让我感到不安。
*swank*缓冲区很长,开头为:
;;; Bootstrapping bundled version of SLIME; please wait...

并以:
(provide 'slime-repl)
;;; slime-repl.el ends here

(run-hooks 'slime-load-hook)
;;; proceed to jack in

这与错误消息一致。

我在这上面花了大约六个小时,包括大量的网络搜索,但没有运气。感谢您的任何帮助,您可以提供。

附录:我继续试验,现在是 *swank*缓冲区像以前一样结束(死在同一个地方),但最后有额外的行。仅供引用,这里是:
(provide 'slime-repl)
;;; slime-repl.el ends here

(run-hooks 'slime-load-hook)
[WARNING] Overriding profile: 'null' (source: pom) with new instance from source: pom
[WARNING] Overriding profile: 'null' (source: pom) with new instance from source: pom
[WARNING] Overriding profile: 'null' (source: pom) with new instance from source: pom
Downloading: org/clojure/clojure/1.+/clojure-1.+.pom from repository clojars at http://clojars.org/repo/
Unable to locate resource in repository
[INFO] Unable to find resource 'org.clojure:clojure:pom:1.+' in repository clojars (http://clojars.org/repo/)
Downloading: org/clojure/clojure/1.+/clojure-1.+.pom from repository stuartsierra-releases at http://stuartsierra.com/maven2
Unable to locate resource in repository
[INFO] Unable to find resource 'org.clojure:clojure:pom:1.+' in repository stuartsierra-releases (http://stuartsierra.com/maven2)
Downloading: org/clojure/clojure/1.+/clojure-1.+.pom from repository clojure at http://build.clojure.org/releases
Unable to locate resource in repository
[INFO] Unable to find resource 'org.clojure:clojure:pom:1.+' in repository clojure (http://build.clojure.org/releases)
Downloading: org/clojure/clojure/1.+/clojure-1.+.pom from repository clojure-snapshots at http://build.clojure.org/snapshots
Unable to locate resource in repository
[INFO] Unable to find resource 'org.clojure:clojure:pom:1.+' in repository clojure-snapshots (http://build.clojure.org/snapshots)
Downloading: org/clojure/clojure/1.+/clojure-1.+.pom from repository central at http://repo1.maven.org/maven2
Unable to locate resource in repository
[INFO] Unable to find resource 'org.clojure:clojure:pom:1.+' in repository central (http://repo1.maven.org/maven2)
Copying 9 files to /Users/gw/tech/clojurestuff/cljprojects/infwb/lib
Copying 1 file to /Users/gw/tech/clojurestuff/cljprojects/infwb/lib/dev
Listening for transport dt_socket at address: 61012
;;; proceed to jack in

(附录结束)

附录 2(2011 年 12 月 12 日)感谢所有提供帮助的人,尤其是 @ivant,我将“复选标记”授予他们。我将考虑这种情况已经结束,因为我已经放弃尝试修复它。由于我使用了一个预打包的初始化包,这很复杂,我确信它非常好,但我无法理解它在做什么,也不明白它是否导致了问题。

我用“干净”的 Emacs 24 重新启动并恢复到 swank-clojure 1.3.3 和 clojure-jack-in现在工作得很好。一旦记录到 swank-clojure 1.4.0-SNAPSHOT 的错误得到解决,我将稍后尝试 CDT。

我从人们的评论中学到了一些东西——再次感谢。

最佳答案

注意我既没有安装 emacs 24,也没有安装 CDT。

查看clojure-jack-in的代码,貌似是事先选好端口,用lein jack-in <port>启动clojure (除非您在某处重新定义了 clojure-swank-command)。

然后解析输出(在 *swank* 缓冲区中可见),寻找特定字符串以触发某些操作。这些是:

 ;;; Bootstrapping bundled version of SLIME
 ...
 ;;; Done bootstrapping.

或作为后备:
 ;;; Bootstrapping bundled version of SLIME
 ...
 (run-hooks 'slime-load-hook) ; on port

并在这些行之间执行 emacs 命令。字符串“proceed to jack in”触发实际连接。

所以检查源,检查一些相关变量的值(如 clojure-swank-command )并检查 *swank* 中的内容缓冲线索。

编辑

您可能想运行 lein deps在您的项目中,请先尝试 M-x clojure-jack-in , 否则输出如
Downloading: org/clojure/clojure/1.+/clojure-1.+.pom from repository clojars at http://clojars.org/repo/
...

可能会出现在 *swank*缓冲,并可能干扰启动过程。

但是这个特定的依赖对我来说看起来很可疑。你能发一下你的project.clj文件也是?

关于emacs - 让 Emacs 24 运行 SLIME 和 Clojure 调试工具包 (CDT) 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8455303/

相关文章:

Emacs:为命令输出定义目标窗口

emacs - Windows 版本 emacs 24.3 上的 ecb 安装错误

unit-testing - 如何将单元测试添加到 Leiningen 项目?

c++ - g++ 链接问题 : undefined reference to functions

linux - 在 Eclipse CDT 中为远程调试启动部署文件的正确方法是什么?

emacs 相当于 ct

emacs - 在 emacs 中更新字体锁定关键字而无需重新加载主要模式

clojure - 如何在多个 Clojure 命名空间中调用同一个方法?

clojure - Figwheel - 不重新加载到浏览器(flappy-bird 演示)

java - CDT 词法分析器 : Get Tokens for comments