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

时间:2016-10-31 11:24:44

标签: clojure leiningen

常规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.

帮助,也赞赏!

1 个答案:

答案 0 :(得分:2)

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