Socket REPL,尤其是在预 repl 的出现之后,似乎已成为 Clojure Repl 推荐且最可靠的途径。
然而,目前启动 Socket REPL 的唯一方法是通过给 [-J] 选项一个非常长的参数。例如,以下是如何启动 node CLJS repl 的方式。
clojure -J-Dclojure.server.repl="{:port 5555 :accept cljs.server.node/repl :args [{:opts $(cat cljsc_opts.edn)}]}"
此方法有几个问题,主要是关于 [-D] 和 [:args] 向量的括号。更不用说用户可能不知道这个特定的 JVM 属性接受 edn。
所有这些细节似乎都是实现细节,启动器应该隐藏这些细节,目标是为用户在他们的编辑器中启动超级简单的 socket REPL。
反驳的观点可能是编辑器可以构建命令行,但这当然是脆弱的:理想情况下,编辑器只知道地址和端口号,然后它可以直接从 REPL 查询信息(例如,在 unrepl 中的某种功能广告)。
提议是将一些 socket repl 选项提升到“一等公民”并作为“变量”。无论如何,避免整个 JVM 属性问题。一等公民可以是别名。
哪些选项是一等尚不清楚,因此工具维护者/创建者需要考虑一下,但有一个票据在那里进行讨论。