Lein repl在加载Clojure脚本后重置命名空间

时间:2015-01-27 00:59:24

标签: clojure leiningen read-eval-print-loop

奇怪的问题,我知道。因此,在使用lein运行REPL时,可以指示lein repl加载特定的命名空间。这太棒了,我们假设我有一个名为ns1.clj的文件,因此我的project.clj文件包含以下行:

:repl-options {:init-ns ns1}

并且,正如预期的那样,该文件已加载。但是,我希望在ns2完成工作后切换到另一个命名空间(ns1.clj),因此我将以下内容附加到ns1.clj

(ns ns2)

问题是,在ns1完成后,Leiningen将REPL名称空间重置为ns1.clj。是否有任何方法可以通过加载ns1.clj来启动REPL,但不能在加载后重置命名空间?顺便说一句,我认为Leiningen应该只执行脚本而不是明确设置命名空间。

背景:我想加载一个clj脚本,然后切换到一个由该脚本从外部源加载的命名空间。因此ns1.clj中的逻辑确定了REPL应该从哪个命名空间开始。

1 个答案:

答案 0 :(得分:1)

根据您希望扩展repl功能的目标,我认为您可能会更好地查看创建lien插件。然后,您可以使用此插件而无需修改代码并通过lein配置文件,只在需要时安装它。

通过查看一些现有的lein插件,你可能会得到一些好的想法/指针。特别是,关于一个名为“超级'它通过添加ansi颜色,改进的测试输出格式,增强的堆栈跟踪显示和一些其他repl调整来扩展repl。该项目可以在https://www.github.com/venantius/ultra

的githug上找到