我正在尝试基于EMACS + CIDER设置我的环境以进行clojure开发,顺便说一句,我在6:20-6:25的时间点看到了这个视频中看到的热重载功能.http://www.parens-of-the-dead.com/e1.html
实际上,作者没有使用像RING/wrap-reload这样的功能,但是在emacs中保存每个缓冲区后,他的代码会在REPL中重新加载.我想我在本地机器上有相同的库(cider,cider-nrepl,clj-refactor,clojure-mode),但是我的本地安装没有显示,它需要每次在REPL中调用(重置)函数.
PS我可以通过EMACS中的代码粗略地获得相同的行为,但我不想使用这样的黑客:
(defun my-clojure-reset () "Reload clojure once file were saved." (when (s-ends-with? "clj" (buffer-file-name)) (cider-interactive-eval "(do (ns user) (reset))"))) (add-hook 'after-save-hook 'my-clojure-reset)
有关如何在EMACS + CIDER中实现文件保存事件的代码重新加载的任何建议吗?
您可以在启动文件中使用以下emacs-lisp执行此类行为:
(add-hook 'cider-mode-hook (lambda () (add-hook 'after-save-hook 'cider-load-buffer nil 'make-it-local)))
这增加了运行苹果酒模式只缓冲区一个钩子(即Clojure的文件时,你所做的苹果酒玩偶),它保存之后,会调用苹果酒负荷缓冲,这将在苹果酒连接评估你的文件的内容.'make-it-local值只是使得这个钩子只被应用到本地缓冲区,否则这个钩子会在你第一次在苹果酒模式下打开之后加载所有模式.