【问题标题】:Can't start cider REPL on emacs无法在 emacs 上启动 cider REPL
【发布时间】: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-in C-c M-j
  • 那行得通。现在我很困惑。如果您在评论之前问我在调用苹果酒时是否打开了 leiningen 项目文件,我会说没有。我几乎可以肯定我可以在访问任何 clojure 文件时调用 cider-jack-in。但话又说回来,我可能错了。
  • 我认为你需要在调用 cider-jack-in 之前打开一个 leiningen 项目的文件。手动运行lein repl 并使用emacs 中的cider 函数并指定主机和端口连接到它的另一个选项。
  • 我是苹果酒的维护者。 cider-jack-in 实际上不需要 lein 项目(只需存在 lein 命令)。似乎我们在添加 cider-jack-in over tramp 的能力时引入了回归。请报告一个问题,这样我就不会忘记解决这个问题。

标签: emacs clojure elisp cider


【解决方案1】:

您受到了在 cider-jack-in 之上添加 tramp 功能 (commit) 引入的回归的影响。我刚刚解决了问题here

以后最好在项目的问题跟踪器上报告问题。你很幸运我也在stackoverflow上。 :-)

【讨论】:

  • 感谢您的快速修复!我没有打开错误报告的原因是因为 90% 的时间我在别人的软件上“发现”了一个错误,结果证明是我做错了。这就是为什么我尝试先在这里询问以防万一有一个简单的解决方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-20
  • 2021-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-16
相关资源
最近更新 更多