【发布时间】:2014-04-29 08:00:44
【问题描述】:
自从几天前我在我的 emacs 上将 cider 更新为 CIDER 0.6.0alpha(包:20140318.1539)后,我一直无法运行 cider-jack-in。
如果我尝试 M-x cider-jack-in,我会在消息缓冲区中收到以下错误
Wrong type argument: stringp, nil
如果我从 lisp 缓冲区运行命令,我会得到以下回溯
Debugger entered--Lisp error: (wrong-type-argument stringp nil)
find-file-name-handler(nil file-remote-p)
file-remote-p(nil)
start-file-process-shell-command("nrepl-server" "*nrepl-server*<2>" "lein repl :headless")
cider-jack-in()
eval((cider-jack-in) nil)
eval-last-sexp-1(nil)
eval-last-sexp(nil)
ad-Orig-call-interactively(eval-last-sexp nil nil)
call-interactively(eval-last-sexp nil nil)
在调试器中查看源代码表明 start-file-process-shell-command 的代码调用了 file-remote-p 几次,并以 default-directory 作为其参数。
现在,我不确定这是否有用,因为我在这里超出了我的深度。但是如果我尝试评估源缓冲区上的默认目录,它会返回一个非零值(“/usr/share/emacs/24.3/lisp/”)。
我尝试清除我的 .emacs.d 目录并重新安装 cider 和 clojure 模式,但我仍然遇到同样的问题,而且我还没有看到任何其他线程在 cider github 页面上谈论此特定行为。所以看起来它与我的环境有某种关系。
我们将不胜感激有关如何解决此问题的任何帮助。
桑蒂。
【问题讨论】:
-
尝试先打开项目文件
C-x C-f(src/abcd/core.clj) 然后运行cider-jack-inC-c M-j -
那行得通。现在我很困惑。如果您在评论之前问我在调用苹果酒时是否打开了 leiningen 项目文件,我会说没有。我几乎可以肯定我可以在访问任何 clojure 文件时调用 cider-jack-in。但话又说回来,我可能错了。
-
我认为你需要在调用 cider-jack-in 之前打开一个 leiningen 项目的文件。手动运行
lein repl并使用emacs 中的cider函数并指定主机和端口连接到它的另一个选项。 -
我是苹果酒的维护者。
cider-jack-in实际上不需要 lein 项目(只需存在lein命令)。似乎我们在添加cider-jack-inover tramp 的能力时引入了回归。请报告一个问题,这样我就不会忘记解决这个问题。