常规的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仓库中也有这样的提示:
但我无法让它起作用。看起来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提示了这一点:
也感谢提供帮助!