请在2024 Clojure状态调查中分享您的想法!

欢迎!有关如何使用本页面的更多信息,请参阅关于页面。

0

以下命令在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看到的值。我已提交一个issue来扩展现有引用文档中包含此信息(https://github.com/clojure/clojure-site/issues/678)。
...