2024 Clojure状态调查中分享您的想法!

欢迎!请查看关于页面以获取更多关于该功能的信息。

+1投票
Clojure

我在某个使用lein的项目中尝试使用Clojure的socket repl。

我在我的lein配置文件中添加了以下内容

:jvm-opts ["-Dclojure.server.repl={:port 0 :accept clojure.core.server/repl}"]

我使用端口0,因为如果使用硬编码的值,我就无法运行多个socket repls,因为它们会指向相同的端口。

这可以工作,但是还是有点痛苦,因为我需要手动获取端口号(请参考下面的代码)并用它来连接Emacs。

(.getLocalPort (get-in @#'clojure.core.server/servers ["repl" :socket]))

我想知道是否有什么方法可以自动化这个。

1答案

0投票

推荐
 
最佳答案

我的解决方案 -- 对于Clojure CLI -- 是在dev.clj文件中运行自己的“启动”代码的别名。它明确启动Socket REPL并报告使用的端口号。我已经多年没有使用lein了,但我似乎记得你告诉Leiningen在启动时运行特定的代码块,所以我想你可以把你的.getLocalPort调用放入这样的代码中。

此外,Clojure本身会在类路径上找到user.clj,所以这也是报告选定端口的一个途径。

...
谢谢,Sean。
...