Leiningen是否将repl-options传递给clojure.main/repl?

5

常规的Clojure repl clojure.main/repl 接受像:print:prompt:eval这样的选项,让您可以钩入并覆盖repl的行为。

例如:

(clojure.main/repl 
    :print #(println "main print!" %) 
    :prompt #(println "main prompt!") 
    :eval  #(do (println "main eval!") (eval %)))

我认为Leiningen的:repl-options可以让您指定相同的选项,然后Leiningen会将它们传递给Clojure的repl。甚至在Leiningen仓库中也有这样的提示:

在project.clj中支持:repl-options,这些选项会被传递给clojure.main/repl。

但我无法让它起作用。看起来Leiningen不接受与clojure.main/repl相同的选项集。:prompt有效,尽管函数签名不同,并且:print:eval似乎被忽略了。
是否有一种方法可以更改Leiningen的repl中的打印和评估行为?
我的project.clj:
(defproject repl-test "0.1.0-SNAPSHOT"
  :dependencies [[org.clojure/clojure "1.7.0"]]
  :repl-options { 
    :print #(println "lein print!" %)
    :prompt (constantly "lein prompt!")
    :eval #(do (println "lein eval!") (eval %))
  }
)

我正在使用Leiningen 2.7.1。
背景:
我一直在尝试设置lein repl以使用pprint输出。再次,NEWS.md提示了这一点:

支持在project.clj中使用:project-init,以允许在:repl-options中使用pprint。

也感谢提供帮助!
1个回答

3

lein repl 启动 nREPL,而不是 clojure.main/repl。它支持不同的选项集。请查看示例 project.clj 以获取支持的参数列表


谢谢,这就解释了。看起来它过去曾经使用过clojure.main/repl。 - Alex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接