当尝试M-x slime-connect连接到在clojure应用程序中运行的swank服务器时,我得到一个用户>提示但是一旦我开始键入连接中断,应用程序抛出:
exception in read loop
java.lang.RuntimeException: Invalid token: swank::
在堆栈中我看到了:
unreadable message: (:emacs-rex (swank:autodoc (quote ("ns" "" swank::%cursor-marker%)) :print-right-margin 80) "user" :repl-thread 4)
当我开始粘液时,我得到:
Versions differ: 2010-07-21 (slime) vs. 20100404 (swank). Continue? (y or n)
但这种不匹配should be OK。
我的项目依赖项中有swank-clojure 1.3.3,我也安装了leiningen插件。我从应用程序内部使用(swank.swank/start-server :host "localhost" :port 4005)
启动swank-server。
我的环境:
我还应该提到M-x clojure-jack-in工作正常,但我需要能够连接 远程。
版本不匹配可能是罪魁祸首吗?有人使用类似的工作设置吗?
答案 0 :(得分:2)
您应升级到swank-clojure 1.4.0并使用与其捆绑的版本的粘液。在clojure模式中有一个'clojure-jack-in'命令,当你从一个clojure项目“插入”到swank时,它将处理粘液的加载。你看到的所有错误都将消失。 slime-disconnect [-all]是退出的正确方法。
答案 1 :(得分:0)
我卸载了debian版本的粘液,并通过ELPA安装了slime-repl。现在一切正常,尽管安装似乎因编译错误而失败:lime-repl.el:122:39:Error: No setf-method known for slime-connection-output-buffer
另一个问题是:什么是退出粘液的“礼貌”方式?如果我使用M-x slime-disconnect,它会在远程swank-server实例中导致异常:
java.lang.Exception: Error reading swank message