November 6, 2019
By: Kevin
emacs的clj/cljs环境(持续更新)
模式
为了让emacs更好用, 需要进行些扩展, 包括emacs的package和外部命令
我们在Purcell 配置的基础上进行扩展:
需要增加的扩展, 都可以用M-x package-install在线安装
- undo-tree
- clj-refactor
- page-break-lines
- cnfonts
增加的外部命令:
- ag, 用于工程目录下文件内容的检索:
brew install the_silver_searcher
针对以上插件的配置
(global-undo-tree-mode)
(yas-global-mode)
(require 'clj-refactor)
(defun my-clojure-mode-hook ()
"Clojure 增加hook."
(clj-refactor-mode 1)
(page-break-lines-mode)
(yas-minor-mode 1) ; for adding require/use/import statements
;; This choice of keybinding leaves cider-macroexpand-1 unbound
(cljr-add-keybindings-with-prefix "C-c C-m"))
(add-hook 'clojure-mode-hook #'my-clojure-mode-hook)
(add-hook 'magit-mode-hook (lambda () (page-break-lines-mode)))
undo-tree
全局undo/redo工具
clj-refactor
clojure重构,暂时不支持cljs
page-break-lines
帅气的分割线

cnfonts
Emacs支持同buffer不同字体显示, 甚至可以嵌入图片. cnfonts是中文字体配置,可以使用你喜欢的字体, 比如雅黑. 调整中英文对齐, 本质上就是让汉语和英语使用不同的字号, 达到一个汉语字符和一个英文字符宽度一致. 可以有漂亮的注释块, org-mode中表格对齐.

常见问题
emacs
project忽略文件
projectile用来做工程管理,搜索路径可以忽略某些文件夹比如日志, JS外部依赖,编译目标, 在根目录下增加文件.projectile:
-/log
-/tmp
-/node_modules
-/target
emacs卡住
在控制台执行以下命令:
ps aux | grep -ie emacs | grep -v grep | awk '{print $2}' | xargs kill -SIGUSR2
cider
cljs自动提示抛出Java异常
解决方案:使用cider-0.22.0 版本
由于package.el只能安装最新版本的包, 降级安装需要手动完成:
- 获得版本0.22.0
- 从cider的github页面下载tag-0.22.0
- 从同事工作正常的emacs上copy一份,目录在
~/.emacs.d/elpa-26.3
- 将这个文件夹copy/unzip到自己的
~/.emacs.d/elpa-26.3目录下 - emacs 执行
M-x package-install-file提示找到cider.el文件,举例:~/.emacs.d/elpa-26.3/cider-20190419.1025/cider.el - 重启emacs(cider.el中的很多设置是写死的,需要重启)