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上运行时,双引号被删除,因此需要在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(.NET的PowerShell)上也失败,因为字符串用了双倍引号

对我来说,这个问题似乎是Clojure命令的问题,因为根据PowerShell文档,你不需要在单引号字符串内逃避双引号

我在尝试在emacs中使用cider时发现了这个问题,cider默认创建第二个命令,并且默认使用pwsh时会失败

这是一个可以修复的问题,还是cider应该像处理powershell那样处理pwsh?

1 答案

+2

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

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

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
在版本7.3中,pwsh引入了破坏性更改
如下分析所示 https://github.com/clojure-emacs/cider/pull/3590#issuecomment-1832783190

这可能是此问题的原因
不清楚如何从Clojure的一侧解决这个问题
by
实际上没有任何Clojure端可以修复的内容,引用是环境解释,它影响了CLI看到的内容。我已提交了一个问题,以扩展现有的引用文档,包含此信息 (https://github.com/clojure/clojure-site/issues/678)。
...