EMACS下 弹出窗口式的 Auto-Complete 自动补全工具简单介绍

可紊 提交于 2019-12-02 18:31:14

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 启动后输入:

Alt+x  load-file
接下来会提示你输入要加载的文件,也就是那个INSTALL.el 文件,记得要带全路径,输入如下:
F:\Downloads\auto-complete-1.3.1\etc\instll.el
然后就会提示你输入要安装的目录,输入如下:
F:\lispbox-0.9\emacs-24.2\lisp\auto-complete-1.3.1\
一般来说就自动安装成功了,然后EMACS会跳出一个新缓冲区,里面有几行配置代码,需要你拷贝到自己的 EMACS 配置文件中,我的是如下内容:
(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 交互模式。

修改的代码如下:

(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 里执行如下命令 :
Alt-x auto-complete-mode
这下终于生效了,就是前面的效果图。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!