【发布时间】:2015-04-05 14:29:35
【问题描述】:
我是 Clojure 编码的新手,并且阅读了许多文章来设置 Emacs 以进行开发。
设置本身按设计工作,但我一直在从 Cider 会话运行服务器,并在进行任何代码更改时完全杀死 Emacs。或者,我需要从 shell 会话中找到服务器进程,然后从那里杀死它。这远非理想。
clojure-getting-started/web.clj
(defn -main [& [port]]
(let [port (Integer. (or port (env :port) 5000))]
(jetty/run-jetty (site #'app) {:port port :join? false})))
苹果酒会议
clojure-getting-started.web> (defonce server (-main))
启动服务器后,(server) 函数会出现以下错误:
1. Unhandled java.lang.ClassCastException
org.eclipse.jetty.server.Server cannot be cast to clojure.lang.IFn
错误消息是有道理的,但是如何仅使用 Emacs 刷新我的代码库?
我想(并希望)有比在 Emacs 上启动 shell 会话并杀死那里的进程更好的方法......
【问题讨论】:
-
我建议您阅读此 github.com/stuartsierra/component 并观看此视频 youtube.com/watch?v=13cmHf_kt-Q 以大致了解如何启动、停止、重新加载代码和启动 Web 服务器
-
您查看github.com/clojure-emacs/cider#basic-usage 和那里列出的键盘快捷键了吗?您可能只想在更改后重新评估缓冲区 (
C-c C-k)(或对单个表单使用C-x C-e)。如果您确实需要重新启动 Clojure,您可以停止它 (C-c C-q) 并从 Emacs (M-x cider-jack-in) 内重新启动。server也是一个简单的 var,而不是函数,所以只需server将返回服务器对象(当您评估(defonce server ...)时,它是通过-main启动的。最后,您想查看lein-ring插件这将简化您的工作流程。 -
如果您是 Clojure 的新手,请查看电子书 Clojure for the Brave and True 的这一章:braveclojure.com/basic-emacs 了解安装 Emacs 和苹果酒。