评论由:stuart.sierra 创建
感谢您对这些补丁的工作。我进行了更多的测试,并发现了更多的问题。
猜测文件扩展名会导致不可预测的结果,因为你不知道哪个文件会被移动。比如,在ClojureScript中,同时有{{.clj}}和{{.cljs}}版本的同一命名空间是很常见的。
遗憾的是,即使指定了“平台”参数,也无法完全解决问题,因为您可能同时拥有{{.cljc}}、{{.clj}}和{{.cljs}}文件。这虽然不常见,但在http://dev.clojure.org/display/design/Reader+Conditionals文本(读者条件的设计)中有明确说明:允许这种情况。例如,一个库可能有一个平台的.bclc文件,并可以用平台特定的文件覆盖它。在这种情况下,即使指定了“平台”参数,您也无法控制哪个文件会被移动。
因此,我认为像“移动命名空间”这样的操作唯一合理的方式是移动定义该命名空间的所有文件,保留它们的文件扩展名。这在用户层面上看起来也是人们想要的。
因此,{{move-ns}}应该接受新旧符号,找到所有匹配的带有任何扩展名的文件,将它们移动/重命名,并保留扩展名,然后对所有.clj、.cljs和.cljc文件应用文本转换。
如果我们正在查找文件,我们不妨消除指定源路径的需要,这也与TNS-39有关。