本文使用practicalli 的 Spacemacs配置以及Clojure配置。
若希望快速上手,可使用下面命令获取Spacemacs及Clojure配置:
git clone --depth=1 [email protected]:practicalli/spacemacs.d.git ~/.spacemacs.d
git clone --depth=1 https://github.com/practicalli/Clojure-deps-edn ~/.clojure
安装Spacemacs并配置Clojure
假设你已经安装好Clojure开发环境,如果还没有可以参考这里安装。
对于国内用户,由于网络状态的原因,需要修改两个地方:
- 使用Spacemacs时需要添加国内镜像,参考我的上一篇文章修改。
- 添加 clojars 的清华源,修改
~/.Clojure/deps.edn
,找到mvn/repos
部分并修改::mvn/repos { ;; ... ;; 取消下面的注释 "clojars-china-mirror" {:url "https://mirrors.tuna.tsinghua.edu.cn/clojars/"} ;; ... }
Clojure与Maven使用相同仓库,且Maven的配置,即
~/.m2/settings.xml
有更高优先级。也就是说当deps.edn
存在同名镜像时,会使用.m2/settings.xml
的设置。
配置deps.edn
- 创建Clojure项目:
Clojure -X:project/new :name august/playground cd playground/
- 添加
.dir-locals.el
,内容如下((Clojure-mode . ((cider-preferred-build-tool . Clojure-cli) (cider-Clojure-cli-global-options . "-M:inspect/reveal-nrepl-cider") (cider-jack-in-dependencies . nil) (cider-jack-in-nrepl-middlewares . nil) (cider-jack-in-lein-plugins . nil) (cider-Clojure-cli-parameters . ""))))
- 使用Spacemacs打开此项目的源码,此时会提示如下信息,输入
y
确认:The local variables list in august/playground contains variables that are risky (**). Do you want to apply it? You can type y -- to apply the local variables list. n -- to ignore the local variables list. cider-preferred-build-tool : Clojure-cli cider-Clojure-cli-global-options : "-M:inspect/reveal-nrepl-cider" ** cider-jack-in-dependencies : nil ** cider-jack-in-nrepl-middlewares : nil ** cider-jack-in-lein-plugins : nil cider-Clojure-cli-parameters : ""
如果没有出现上面的提示那可以按下
SPC SPC
然后输入revert-buffer
强制重新加载buffer.
- 打开REPL:
, |
, 选择cider-jack-in-clj
,REPL启动成功后Emacs会打开Cider NREPL,同时还会打开Reveal的窗口。
修改 Reveal 窗口的样式
默认Reveal主题字体很小且不支持中文,可以使用JVM参数,也可以修改 ~/.Clojure/deps.edn
里 :inspect/reveal-nrepl-cider
对应的值:
:inspect/reveal-nrepl-cider
{:extra-deps {vlaaad/reveal {:mvn/version "1.1.159"}
nrepl/nrepl {:mvn/version "0.8.3"}
cider/cider-nrepl {:mvn/version "0.25.4"}
refactor-nrepl/refactor-nrepl {:mvn/version "2.5.0"}}
;; 修改主题,字体
:jvm-opts ["-Dvlaaad.reveal.prefs={:theme,:light,:font-family,\"WenQuanYi Micro Hei Mono\",:font-size,28}"]
:main-opts ["-m" "nrepl.cmdline"
"--middleware" "[vlaaad.reveal.nrepl/middleware,refactor-nrepl.middleware/wrap-refactor,cider.nrepl/cider-middleware]"]}
信任.dir-locals.el
里的参数
使用.dir-locals.el
后,每次打开项目的文件时都会询问是否执行其中的操作,如果觉得这些询问太烦,你可以在把这些操作加入信任列表(safe-local-variable-values
)。方法是使用SPC f e d
打开Spacemacs配置文件,找到dotspacemacs/emacs-custom-settings
函数里的custom-set-variables
,修改或添加safe-local-variable-values
配置项,例如:
'(safe-local-variable-values
'(
;;;
(cider-clojure-cli-parameters . "")
(cider-preferred-build-tool . clojure-cli)
(cider-clojure-cli-global-options . "-M:inspect/reveal-nrepl-cider")
(cider-jack-in-dependencies . nil)
(cider-jack-in-nrepl-middlewares . nil)
(cider-jack-in-lein-plugins . nil)
;;;
))
保存后使用SPC f e R
重新加载配置文件,再打开项目文件时就不会出现提示了。