评论人:stuart.sierra
感谢您处理这些补丁。我进行了一些更多的测试,并发现了更多的问题。
猜测文件扩展名会导致不可预测的结果,因为您不知道哪个文件被移动。在ClojureScript中使用{{:require-macros}}时,同一个命名空间同时拥有{{.clj}}和{{.cljs}}版本的情况并不少见。
遗憾的是,即使指定了“平台”参数,问题也未能完全解决,因为在{{.clj}}和{{.cljs}}文件的同时,您也可能拥有{{.cljc}}文件。这不是很常见,但在《Reader Conditionals》的设计(链接: http://dev.clojure.org/display/design/Reader Conditionals)中明确允许:)例如,一个库可能有一个平台无关的.cljc文件,并使用特定于平台文件的覆写。在这种情况下,即使指定了“平台”参数,您也无法控制哪个文件被移动。
因此,我认为像“移动命名空间”这样的操作只有移动定义该命名空间的所有文件,并保留它们的文件扩展名,才有意义。这看起来也是用户期望的。
因此,应该使用new/old符号,找到所有匹配的文件(任何扩展名),在保留扩展名的同时移动/重命名它们,然后对所有.clj、.cljs和.cljc文件应用文本变换。
如果我们正在查找文件,我们最好消除指定源路径的需求,这也与TNS-39相关。