Emacs配置管理框架Cabbage – 介绍
原文地址:http://defun.me/blog/2012-10-08/introduction-to-cabbage/
Emacs的配置是很繁琐的,而且不太好组织,常常看见网上的一些人把大部分配置都写在一个.emacs文件里面,而且各种第三方插件的管理也很混乱。我以前的配置文件就是这样的,后来在github上看到了emacs-starter-kit, 发现它的配置管理就做的比较好了,但是就如其名字所言,这个只是starter-kit,很多方面其实还是做的不够灵活,我当时试着把自己的配置慢慢迁移上去,遇到稍微复杂一点的配置,starter-kit就不太能hold住。然后我无意中发现了Cabbage这个项目,看了下源码,总算找到合适的了。
先看下Cabbage的介绍
cabbage helps you to manage your emacs configuration and allows you to stay in sync with other fellow emacs users. It is designed to be a community-driven framework to build your emacs configuration. The ultimate goal of cabbage is to provide a hassle-free, fast and robust emacs setup.
安装
过程跳过,官网上有教程,而且Cabbage还配了安装脚本,应该说安装还是很方便的。
注意 安装完成后,如果发现快捷键不能使用了,将~/.emacs.d/config中的 ergonomic 删除或者注释掉。这是因为Cabbage默认使用的是ergoemacs的快捷键binding,这个快捷键和大多数人的使用习惯是不一样。
Cabbage特性
- Cabbage最重要的概念是bundle,和Textmate以及Sublime Text的bundle很类似。Cabbage自己内置了接近40个已经封装好的bundle,开箱即用,包括:
- Java
- Python
- Ruby
- Javascript
- …
- Cabbage的bundle与用户自己的.emacs.d不在同一个目录,所以可以分开更新
- Cabbage有system-specific的配置加载机制,用户可以在不同的电脑上使用不同的配置,这样就可以在配置中减少一些如
(if (eq system-name "xxx")
之类的代码 - Cabbage有user-specific的配置加载机制,但是我觉得意义不是太大
Cabbage缺点
添加新的bundle很麻烦:用户已经有了自己的一些emacs lisp代码,如果想将这些代码封装成一个bundle,就不好办了,因为Cabbage目前只能加载自己的git repo里面的bundle,如果用户想添加bundle,就只能先fork project,然后pull request提供一个bundle到git,然后通过了之后再在本地更新cabbage repo使用,这个过程是很麻烦的,而且用户所提交的bundle还不一定能被接受。 所以我现在也在给Cabbage写一个私有bundle加载的代码,还在code review的过程中
总结
我现在一直在使用这个,然后将以前的配置都迁移到了Cabbage下面统一管理,总体来讲,还是不错的,各种配置文件不在像以前那么乱了,当然,Cabbage还是一个比较年轻的项目,问题还是有的,像之前提到的不能加载自己的私有bundle什么的,不过慢慢应该都会解决的,Cabbage的开发人员也还挺活跃的,有什么问题他们也会很快解答。