使用swank + leiningen + emacs时如何在保存时重新加载文件

时间:2010-04-07 21:58:26

标签: emacs clojure slime leiningen

我正在设置slime + lein-swank以在我保存文件时重新加载从repl引用的源文件。目前我这样做:

  • 编辑文件
  • 保存文件
  • 切换到repl
  • (使用:reload-all'com.package.namespace)
  • 测试东西

我不想记得做第4步。

3 个答案:

答案 0 :(得分:16)

在切换到slime-compile-and-load-file的REPL之前,您可以使用SLIME的 C-c C-k 。如果您还没有,它会提示您保存文件。完成后,您重新定义的内容应该在新版本的SLIME REPL中提供。然后你可以使用 C-c C-z 来调出REPL(当你不再需要它时,用 C-x 0 关闭它)。

答案 1 :(得分:13)

在.emacs中设置一个钩子:

(defun clojure-slime-maybe-compile-and-load-file ()
  "Call function `slime-compile-and-load-file' if current buffer is connected to a swank server.                                                               

Meant to be used in `after-save-hook'."
  (when (and (eq major-mode 'clojure-mode) (slime-connected-p))
    (slime-compile-and-load-file)))


(add-hook 'after-save-hook 'clojure-slime-maybe-compile-and-load-file)

答案 2 :(得分:8)

与之前的答案一样,我使用相同的键击但将它们记录到宏中并将其绑定到键。这样,它只是保存,编译和切换到REPL的一个按键。最终看起来像这样:

(fset 'compile-and-goto-repl
   "\C-x\C-s\C-c\C-k\C-c\C-z")

(global-set-key [f6] 'compile-and-goto-repl)