EMACS下 弹出窗口式的 Auto-Complete 自动补全工具简单介绍
auto-complete 是一个很不错的自动补全工具,弹出窗口显示补全列表,比较不错的是自定义的函数,只要在这个编辑缓冲区出现过短语,也会自动识别,下面第一个例子是系统关键字,第二个例子是自定义的关键字:
![](https://i-blog.csdnimg.cn/blog_migrate/eceee0d6808bc2e797264d4376f47135.png)
简单介绍一下安装和使用.
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 启动后输入:
1
|
Alt+x load-
file
|
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\
|
1
2
3
4
|
(add-to-list 'load-path
"f:/lispbox-0.9/emacs-24.2/lisp/auto-complete-1.3.1/"
)
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories
"f:/lispbox-0.9/emacs-24.2/lisp/auto-complete-1.3.1/ac-dict"
)
(ac-config-default)
|
把这几行手动拷贝到你的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 交互模式。
修改的代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
(defcustom ac-modes
'(emacs-lisp-mode
lisp-mode
lisp-interaction-mode
c-mode cc-mode c++-mode
java-mode clojure-mode scala-mode
scheme-mode
ocaml-mode tuareg-mode
perl-mode cperl-mode python-mode ruby-mode
ecmascript-mode javascript-mode js-mode js2-mode php-mode css-mode
makefile-mode sh-mode fortran-mode f90-mode ada-mode
xml-mode sgml-mode)
"Major modes `auto-complete-mode' can run on."
:
type
'(repeat symbol)
:group 'auto-complete)
|
再次重启EMACS,然后还是没效果,就手动启动了一下 auto-complete,也就是在emacs 里执行如下命令 :
1
|
Alt-x auto-complete-mode
|