调用cider-refresh显示“不知道如何使局部变量成为别名”

时间:2018-09-05 18:32:09

标签: emacs clojure cider

我正在使用Emacs 25和CIDER 0.18.0。

我正在使用cider-connect附加到正在运行的nREPL进程。连接后,尝试调用cider-refresh时,它的响应是“不知道如何使局部变量成为别名”。

我尝试通过设置Emacs来跟踪功能以及查看字节码编译缓冲区来进行调试。

网络上的大量帖子是指使用cider-refresh,因此我确信它应该可以使用。

如何识别并解决此问题?

1 个答案:

答案 0 :(得分:2)

在CIDER 0.18.0版中,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,所以调用函数失败并显示上述错误消息。

修改.emacscider-ns-refresh-before-fn以引用新功能(例如➜ (venv:evernote) evernote_bear_project git:(master) ✗ tree . ├── README.md ├── bear2evernote │ ├── static │ └── templates ├── config │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py ├── manage.py ├── sample │ ├── EDAMTest.py <--- This here imports from `util.files` │ └── enlogo.png └── util ├── __init__.py ├── files.py └── test_files.py )解决了该问题。