3

Clojure 開発用に EMACS+CIDER に基づいて環境をセットアップしようとしていますが、このビデオの 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 のファイル保存イベントでコードのリロードを実装する方法はありますか?

4

1 に答える 1

5

起動ファイルで次の emacs-lisp を使用すると、この種の動作を実行できます。

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

これにより、cider-mode を実行しているバッファー (つまり、cider-jack-in を行った場合の clojure ファイル) のみにフックが追加され、保存後に cider-load-buffer が呼び出され、cider 接続でファイルの内容が評価されます。 . 'make-it-local 値は、このフックがローカル バッファにのみ適用されるようにするだけです。そうしないと、最初に cider-mode で何かを開いた後に、このフックがすべてのモードでロードされます。

于 2016-01-07T23:51:29.743 に答える