2024年 Clojure 状态调查!中分享您的想法。

欢迎!请参阅关于页面了解该平台的更多信息。

0
Clojure CLI

以下命令在 pwsh 上运行良好

clojure -Sdeps '{:deps {nrepl/nrepl {:mvn/version "1.0.0"} cider/cider-nrepl {:mvn/version "0.43.3"}} :aliases {:cider/nrepl {:main-opts ["-m" "nrepl.cmdline" "--middleware" "[cider.nrepl/cider-middleware]"]}}}' -M:cider/nrepl

但在 powershell(Windows PowerShell 5.1)上失败,当在 windows powershell 上运行时,双引号被删除,因此要在这上面运行,我们需要转义双引号,并运行以下命令

clojure -Sdeps '{:deps {nrepl/nrepl {:mvn/version ""1.0.0""} cider/cider-nrepl {:mvn/version ""0.43.3""}} :aliases {:cider/nrepl {:main-opts [""-m"" ""nrepl.cmdline"" ""--middleware"" ""[cider.nrepl/cider-middleware]""]}}}' -M:cider/nrepl

第二个命令在 pwsh(powershell dotnet)上也失败,因为字符串是双双引号的

对我来说,这个问题似乎是 Clojure 命令的问题,因为根据 powershell 文档,您在单引号字符串中不需要转义双引号

我发现这个问题是因为我在尝试使用 emacs 上的 cider,cider 默认创建第二个命令,并且默认情况下使用 pwsh 时会失败

这是否是一个可以解决的问题,或者 cider 应该像处理 powershell 一样处理 pwsh?

1 答案

+2

Clojure CLI 参考讨论了 Windows 上的引号问题

https://clojure.org/reference/deps_and_cli#quoting

by
您好,Sean

感谢您通过链接回复,在引用部分的末尾两个示例在PowerShell 5.1中运行正常,但在PowerShell 7.4(pwsh)中会产生错误

PowerShell 7.4.0
PS C:\> clj -X clojure.core/prn :val '{:s1 """nospaces""" :s2 ""has spaces""}'
无法读取的参数: "{:s1 """"nospaces"""" :s2 """"has spaces""""}"
PS C:\> clj -X clojure.core/prn :string1 '\"no-spaces\"' :string2 '"""has spaces"""'
无法读取的参数: "\\\"no-spaces\\\""
by
似乎pwsh从7.3版本开始引入了破坏性更改
据此分析,https://github.com/clojure-emacs/cider/pull/3590#issuecomment-1832783190

这应该是此问题背后的原因
不确定该如何从Clojure方面进行修复
by
这不是Clojure方面可以解决的问题,引用是环境影响理解,影响了CLI看到的内容。我已经提交了一个问题,建议扩展现有的引用文档来提供这个信息(https://github.com/clojure/clojure-site/issues/678)。
...