常规Clojure repl clojure.main/repl
接受:print
,:prompt
和:eval
等选项,可让您挂钩并覆盖repl的行为。
E.g。
(clojure.main/repl
:print #(println "main print!" %)
:prompt #(println "main prompt!")
:eval #(do (println "main eval!") (eval %)))
我认为Leiningen的:repl-options
允许你指定相同的选项,而Leiningen会将它们传递给Clojure的副本。在Leiningen回购中甚至有一个暗示:
Support :repl-options in project.clj that get passed to clojure.main/repl.
我无法让这个工作。似乎Leiningen不接受与clojure.main/repl
相同的选项集。 :prompt
有效,但功能签名不同,:print
和:eval
似乎被忽略了。
有没有办法改变Leiningen复制中的打印和评估行为?
我的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暗示:
Support :project-init in project.clj to allow pprint to be used in :repl-options.
帮助,也赞赏!
答案 0 :(得分:2)
lein repl
启动nREPL,而不是clojure.main/repl
。它支持一组不同的选项。检查示例project.clj
是否为list of supported parameters。