emacs自动补全插件autocomplet和yasnippet,安装、配置和扩展 yongmou

 这段时间突然闲了起来,就又折腾折腾emacs. 

一直想解决自动补全的功能,因为这时现代开发环境必备的特色。google了一下,很多使用auto-complete和yasnippet的,于是自己动手装了起来。先查阅安装文档,又参考别人的方法,各种曲折,最后还是全部配好了,并且学了学这两种插件的扩展方法,可以自己定义补全的内容了——Cool !
先介绍一下这二者的关系,auto-complete是一个补全框架,也提供了简单的补全源(source);yasnippet可以作为auto-complete的补全source,也可以单独使用,不过还是配合auto-complete使用比较好。当然auto-complete和可以使用其他的source,以后再试试。

1 安装和配置

 

1.1 auto-complete

下载auto-complete-1.3.1版本,参考文档中的安装方法。
1.3版本没有办法使用yasnippet的最新版本,解决方法为:到auto-complete的github上clone下来auto-complete-config.el,替换掉安装目录中的该文件, 记得要重新byte-compile一下。
其配置文件如下:

(add-to-list 'load-path "~/.emacs.d/plugins/auto-complete")
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/plugins/auto-complete/ac-dict")
(ac-config-default)
(setq ac-use-quick-help nil)
(setq ac-auto-start 4) ;; 输入4个字符才开始补全
(global-set-key "\M-/" 'auto-complete)  ;; 补全的快捷键,用于需要提前补全
;; Show menu 0.8 second later
(setq ac-auto-show-menu 0.8)
;; 选择菜单项的快捷键
(setq ac-use-menu-map t)
(define-key ac-menu-map "\C-n" 'ac-next)
(define-key ac-menu-map "\C-p" 'ac-previous)
;; menu设置为12 lines
(setq ac-menu-height 12)

auto-complete默认支持常见语言的补全,其具体配置在auto-complete-config.el中,参见该文件的最后几行。
对于auto-complete不支持的mode还需要额外的配置,比如latex

;; latex-mode
(add-to-list 'ac-modes 'latex-mode)
(defun ac-latex-mode-setup()
  (setq ac-sources (append '(ac-source-yasnippet) ac-sources)))
(add-hook 'latex-mode-hook 'ac-latex-mode-setup)

1.2 yasnippet

安装yasnippet可以直接从github中clone下来的。 安装过程,参考文档。 我的关于yasnippet的配置文件如下,注意这段要放在auto-complete相关配置前面,因为ac是需要用到yas的。

(add-to-list 'load-path "~/.emacs.d/plugins/yasnippet")
(require 'yasnippet)
(setq yas/prompt-functions 
   '(yas/dropdown-prompt yas/x-prompt yas/completing-prompt yas/ido-prompt yas/no-prompt))
(yas/global-mode 1)
(yas/minor-mode-on) ; 以minor mode打开,这样才能配合主mode使用

2 扩展

详细的扩展方法还是参考用户手册,这里只给出简单的介绍。

2.1 auto-complete

扩展ac的方法比较简单,在ac的安装目录中有ac-dict有**-mode的文本文件,直接修改这个文件就可以了。

2.2 yasnippet

ac的简单的扩展方法决定了,它只能作为一个框架来使用,更强大的功能只能由其他工具提供。
关于yasnippet的扩展方法,从一个内置的snippet例子开始

Date: 2013-04-26T09:44+0800

Author: liyongmou

Org version 7.9.2 with Emacs version 24

Validate XHTML 1.0
原文地址:https://www.cnblogs.com/liyongmou/p/3044155.html