请分享您的想法,参与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 (powershell dotnet) 上失败,因为字符串是双双引号

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

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

这是否是可以通过修复的问题,或者Cider应该以不同的方式处理 pwsh 和 powershell?

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
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)。
...