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