Как перезагрузить файлы при сохранении при использовании swank + leiningen + emacs - PullRequest
22 голосов
/ 08 апреля 2010

Я хочу настроить slime + lein-swank для перезагрузки исходных файлов, на которые ссылаются из repl, когда я сохраняю файл. В настоящее время я делаю это:

  • редактировать файл
  • сохранить файл
  • переключиться на repl
  • (используйте: reload-all 'com.package.namespace)
  • тестовый материал

Я не хочу помнить о выполнении шага 4.

Ответы [ 3 ]

16 голосов
/ 08 апреля 2010

Вы можете использовать SLIME Cc Ck перед переключением на REPL для slime-compile-and-load-file.Он предложит вам сохранить файл, если вы этого еще не сделали.Когда это будет сделано, то, что вы переопределили, должно быть доступно на SLIME REPL в их новых версиях.Тогда вы можете использовать Cc Cz , чтобы вызвать REPL (закройте его с помощью Cx 0 , когда он вам больше не нужен).

13 голосов
/ 08 апреля 2010

Установить хук в .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)
8 голосов
/ 08 апреля 2010

Как и в предыдущем ответе, я использую те же самые нажатия клавиш, но записываю их в макрос и привязываю его к клавише. Таким образом, это всего лишь одно нажатие клавиши для сохранения, компиляции и переключения на 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)
...