奇怪的问题,我知道。因此,在使用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应该从哪个命名空间开始。
答案 0 :(得分:1)
根据您希望扩展repl功能的目标,我认为您可能会更好地查看创建lien插件。然后,您可以使用此插件而无需修改代码并通过lein配置文件,只在需要时安装它。
通过查看一些现有的lein插件,你可能会得到一些好的想法/指针。特别是,关于一个名为“超级'它通过添加ansi颜色,改进的测试输出格式,增强的堆栈跟踪显示和一些其他repl调整来扩展repl。该项目可以在https://www.github.com/venantius/ultra
的githug上找到