EMACS下 弹出窗口式的 Auto-Complete 自动补全工具简单介绍
auto-complete 是一个很不错的自动补全工具,弹出窗口显示补全列表,比较不错的是自定义的函数,只要在这个编辑缓冲区出现过短语,也会自动识别,下面第一个例子是系统关键字,第二个例子是自定义的关键字:
简单介绍一下安装和使用.
1、下载对应版本
MS WINDOWS系统下载这个 http://cx4a.org/pub/auto-complete/auto-complete-1.3.1.zip
其他LINUX/UNIX/OSX系统下载这个 http://cx4a.org/pub/auto-complete/auto-complete-1.3.1.tar.bz2
2、解压到本地目录,我的解压目录是这个 “F:\Downloads\auto-complete-1.3.1\”
3、在准备安装的位置手工新建一个目录,我新建的目录在这里 “F:\lispbox-0.9\emacs-24.2\lisp\auto-complete-1.3.1\“
4、启动 emacs ,在EMACS里执行安装文件 INSTALL.el 具体操作为在EMACS 启动后输入:
接下来会提示你输入要加载的文件,也就是那个INSTALL.el 文件,记得要带全路径,输入如下:
1 |
F:\Downloads\auto-complete-1.3.1\etc\instll.el |
然后就会提示你输入要安装的目录,输入如下:
1 |
F:\lispbox-0.9\emacs-24.2\lisp\auto-complete-1.3.1\ |
一般来说就自动安装成功了,然后EMACS会跳出一个新缓冲区,里面有几行配置代码,需要你拷贝到自己的 EMACS 配置文件中,我的是如下内容:
1 |
(add-to-list 'load-path "f:/lispbox-0.9/emacs-24.2/lisp/auto-complete-1.3.1/" ) |
2 |
(require 'auto-complete-config) |
3 |
(add-to-list 'ac-dictionary-directories "f:/lispbox-0.9/emacs-24.2/lisp/auto-complete-1.3.1/ac-dict" ) |
把这几行手动拷贝到你的EMACS初始化配置文件中(一般来说都是用户目录下的 .emacs ,不过我的环境是自己组装的 LISPBOX,初始化配置文件是 F:\lispbox-0.9\emacs-24.2\site-lisp\lispbox.el )。
把这几行命令拷贝过去之后,重新启动EMACS,再打开一个编辑缓冲区应该就可以使用 auto-complete 的自动补全功能了,可惜悲催的是它就是没效果,只好再返回去读它的说明文档,然后查看源代码 auto-complete.el,发现没有提供 LISP-MODE 只提供了EMACS-LISP-MODE 和 LISP-INTERACTIVE-MODE ,就自己加了一句 LISP-MODE 。
【小知识】话说EMACS下有3种LISP模式:
第一种是 EMACS-LISP-MODE,就是但凡编辑以 .el 和 .emacs 为后缀的文件,以及文件名为 _emacs 的文件都会自动启动EMACS-LISP-MODE;
第二种是 LISP-MODE,所有以 .lisp 或 .l 或 .lsp 或 .ml 为后缀的文件,都会对应到 LISP-MODE,这种模式就是开发LISP程序要用到的;
最后一种是 LISP-INTERACTIVE-MODE ,就是LISP 交互模式。
修改的代码如下:
05 |
c-mode cc-mode c++-mode |
06 |
java-mode clojure-mode scala-mode |
08 |
ocaml-mode tuareg-mode |
09 |
perl-mode cperl-mode python-mode ruby-mode |
10 |
ecmascript-mode javascript-mode js-mode js2-mode php-mode css-mode |
11 |
makefile-mode sh-mode fortran-mode f90-mode ada-mode |
13 |
"Major modes `auto-complete-mode' can run on." |
14 |
: type '(repeat symbol) |
15 |
:group 'auto-complete) |
再次重启EMACS,然后还是没效果,就手动启动了一下 auto-complete,也就是在emacs 里执行如下命令 :
1 |
Alt-x auto-complete-mode |
这下终于生效了,就是前面的效果图。