我的 Emacs 配置

“使用”Emacs也有一年多了,最近写代码、看代码比较频繁,所以对Emacs的配置文件也改动的比较大。所以此文用以记录我的Emacs配置的方方面面。这是我的Emacs配置在Github上的链接

1. 外观

1.1 菜单栏

Emacs是默认显示菜单栏的,不过Emacs用户几乎不使用菜单,所以可以隐藏掉:

(menu-bar-mode -1)

1.2 Tabber

参考Emacs安装和设置tabbar

1.3 Buffer

首先要显示行号和隐藏滚动条:

(global-linum-mode)
(scroll-bar-mode -1)

1.3.1 字体设置

参考折腾Emacs

1.3.2 配色方案

使用color-theme.el

1.3.3 括号配对

使用rainbow-delimiters.el

1.3.4 酷炫的highlight-tail

参考用性感的尾巴highlight-tail标记最近的修改

1.4 Mode Line

添加了which-function-modedisplay-time

2. 编辑

2.1 查找

使用highlight-symbol.el,这样就可以使用highlight-symbol-next查找光标所在的关键字。还可以highlight-symbol-at-point使所有的关键字都高亮显示。不同的关键字还可以用不同的颜色显示。

2.2 括号的自动匹配

使用autopair完成,不过还有更高级的插件,可以匹配诸如\begin\end。不过我觉得没有必要,因为这类匹配不如用万能的yasnippet解决。

2.3 自动补全

提到自动补全,不得不说Auto Complete Mode。(以下简称AC)

AC其实主要是提供了一套自动补全的前端,其后端(ac-source)可以交由程序员自由的发挥。AC本身提供了一系列Mode的字典文件,其中包含了常用的关键字。另外正在编辑的文档中的单词也被加到了匹配的项中。不过,这还远远不够。

2.3.1 C&CPP

参考Emacs+auto-complete+clang进行代码补全

2.3.2 Java

使用auto-java-complete

Troubleshooting:安装过程中要生成Java各个类的Tags,其中生成Tags的程序是依据CLASSPATH这个环境变量。而我从Ubuntu PPA装的Oracle Java1.6并没有设置这个环境变量。

我是这样设置的:

$ export JAVA_HOME=/usr/lib/jvm/java-6-oracle
$ export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

2.4 yasnippet

简而言之,yasnippet就是一系列的写作模板。yasnippet可以与AC协作,即AC可以把yasnippet的keys作为ac-source,显示在弹出菜单中,用户选中敲下回车键后就自动将模板展开。