当前位置:  开发笔记 > 前端 > 正文

Clojure代码热重载功能

如何解决《Clojure代码热重载功能》经验,为你挑选了1个好方法。

我正在尝试基于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中实现文件保存事件的代码重新加载的任何建议吗?



1> 小智..:

您可以在启动文件中使用以下emacs-lisp执行此类行为:

(add-hook 'cider-mode-hook
          (lambda ()
            (add-hook 'after-save-hook 'cider-load-buffer nil 'make-it-local)))

这增加了运行苹果酒模式只缓冲区一个钩子(即Clojure的文件时,你所做的苹果酒玩偶),它保存之后,会调用苹果酒负荷缓冲,这将在苹果酒连接评估你的文件的内容.'make-it-local值只是使得这个钩子只被应用到本地缓冲区,否则这个钩子会在你第一次在苹果酒模式下打开之后加载所有模式.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有