November 6, 2019
By: Kevin

emacs的clj/cljs环境(持续更新)

  1. 模式
    1. undo-tree
    2. clj-refactor
    3. page-break-lines
    4. cnfonts
  2. 常见问题
    1. emacs
      1. project忽略文件
      2. emacs卡住
    2. cider
      1. cljs自动提示抛出Java异常

模式

为了让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

帅气的分割线 pagebreak

cnfonts

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

pagebreak

常见问题

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只能安装最新版本的包, 降级安装需要手动完成:

  1. 获得版本0.22.0
    • 从cider的github页面下载tag-0.22.0
    • 从同事工作正常的emacs上copy一份,目录在~/.emacs.d/elpa-26.3
  2. 将这个文件夹copy/unzip到自己的~/.emacs.d/elpa-26.3目录下
  3. emacs 执行 M-x package-install-file提示找到cider.el文件,举例:~/.emacs.d/elpa-26.3/cider-20190419.1025/cider.el
  4. 重启emacs(cider.el中的很多设置是写死的,需要重启)
Tags: clojure cider emacs clojurescript