调用 cider-refresh 显示 "Don't know how to make a localized variable an alias"

Calling cider-refresh shows "Don't know how to make a localized variable an alias"

我正在使用 Emacs 25 和 CIDER 0.18.0。

我正在使用 cider-connect 附加到 运行 nREPL 进程。连接后,当尝试调用 cider-refresh 时,它会响应 "Don't know how to make a localized variable an alias"。

我尝试通过设置 Emacs 来跟踪函数并查看字节码编译缓冲区来进行调试。

网络上的大量帖子都提到了使用 cider-refresh,所以我相当确定它应该有效。

如何识别并解决此问题?

在 CIDER 0.18.0 版本中,cider-rename 函数被重命名为 cider-ns-rename。该代码为指向新函数的旧函数定义了一个别名。

我正在处理的项目有一个 .dir-locals.el 文件(以及我的 .emacs 文件),其中包含挂钩到旧函数名称的代码:

((nil . ((cider-refresh-before-fn . "integrant.repl/suspend")
         (cider-refresh-after-fn . "integrant.repl/resume"))))

因为这些引用 cider-refresh(现在是别名)而不是 cider-ns-refresh,所以调用函数失败并出现上述错误消息。

修改 .dir-locals.el.emacs 以引用新函数(例如 cider-ns-refresh-before-fn)解决了问题。