我正在使用Emacs Live,因为它看起来不错,为我节省了大量的配置工作。现在它工作了好几天,但今天有些东西显然已经破产了。具体来说,自动完成功能已经破裂(我相信它可能是ac-nrepl的一个问题)。基本上,我的迷你缓冲区现在只显示“未找到命名空间。”,我不再获得真正的自动完成功能(仅对已存在于文件中的单词完成)。当我运行C-c M-n
时,每次自动完成时,我都会得到一个空的* nREPL错误*缓冲区。
编辑:当我使用nrepl-jack-in启动nrepl-server时,只发生 。只需连接到现有的(例如使用lein repl创建)就可以正常工作。
答案 0 :(得分:8)
Namespace not found
的问题是nrepl不知道当前缓冲区的命名空间。 nrepl-set-ns(C-c M-n
)的问题是运行in-ns
,它不会带来clojure核心依赖项。
在这两种情况下,解决方法是只评估缓冲区的ns
s-expr,或者使用nrepl-load-current-buffer
加载整个缓冲区。
当然,您可以修改nrepl-set-ns以执行ns
或添加另一个fn。
答案 1 :(得分:0)
看起来像向缓冲区添加可能为空的ns声明:
(ns example ...)
并且执行nrepl-set-ns
是nrepl的预期用法。它允许使用多个Clojure缓冲区,每个缓冲区都有自己的导入,别名等。
我选择在.clj
文件创建/打开时添加一个钩子来自动完成这项工作。但是仍有人负责在修改时刷新ns
表单!