常规的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不接受与clojure.main/repl相同的选项集。 :prompt有效,尽管函数签名不同,并且:print:eval似乎被忽略了。

有没有办法改变莱宁根的代表的打印和评估行为?

我的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暗示了这一点:



帮助,也表示赞赏!

最佳答案

lein repl启动nREPL,而不是clojure.main/repl。它支持一组不同的选项。检查样本project.clj中的list of supported parameters

关于clojure - 莱宁根是否将repl-options传递给clojure.main/repl,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40341219/

10-12 07:36