windows配置cider和clojure clj

时间:2023-03-08 15:49:09

windows配置cider和clojure clj

*/-->

pre.src {background-color: #292b2e; color: #b2b2b2;}

windows配置cider和clojure clj

1 clj windows

因为leiningen 启动速度太慢了,linux下的clj启动速度挺好的,就是clj命令行对windows支持还在测试中,有一个第三方实现的clj windows项目,用于支持windows下的clojure cli。项目地址clj-windows。不过在配合cider的过程中有命令行启动参数的问题,需要修改cider的代码,在此记录下,用于备忘。

linux的启动命令:

clj -Sdeps '{:deps {cider/cider-nrepl {:mvn/version "0.20.0"} }}' -e '(require (quote cider-nrepl.main)) (cider-nrepl.main/init ["cider.nrepl/cider-middleware"])'

Windows的启动命令:

clj -Sdeps "{:deps {cider/cider-nrepl {:mvn/version \"..\"} }}" -e "(require (quote cider-nrepl.main)) (cider-nrepl.main/init [\"cider.nrepl/cider-middleware\"])"

主要是把单引号改为双引号,嵌套的双引号进行转义。

2 cider.el的修改

首先是cider-jack-in-params函数:

('clojure-cli (format cider-clojure-cli-parameters
(concat
"["
(mapconcat
(apply-partially #'format "\"%s\"") ;; 改这里
(cider-jack-in-normalized-nrepl-middlewares)
", ")
"]"))) ;; 改为
(apply-partially #'format "\\\"%s\\\"")

然后是 cider-clojure-cli-jack-in-dependencies函数:

(concat
global-opts
(unless (seq-empty-p global-opts) " ")
"-Sdeps '{:deps {" ;; 修改这里和下面的引号
(mapconcat #'identity
(seq-map (lambda (dep) (format "%s {:mvn/version \"%s\"}" (car dep) (cadr dep))) dependencies)
" ")
"}}' "
params) ;; ---> 改引号为下面的形式
"-Sdeps \"{:deps {"
(mapconcat #'identity
(seq-map (lambda (dep) (format "%s {:mvn/version \\\"%s\\\"}" (car dep) (cadr dep))) dependencies)
" ")
"}}\" "

修改上面两个地方后,cider就可以启动clj cli了,可以正确解析deps.edn依赖。

作者: ntestoc

Created: 2019-03-16 周六 19:57