zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    BZOJ 3744 Gty的妹子序列
    BZOJ 3872 Ant colony
    BZOJ 1087 互不侵犯
    BZOJ 1070 修车
    BZOJ 2654 tree
    BZOJ 3243 向量内积
    1003 NOIP 模拟赛Day2 城市建设
    CF865D Buy Low Sell High
    CF444A DZY Loves Physics
    Luogu 4310 绝世好题
  • 原文地址:https://www.cnblogs.com/liyongmou/p/3044155.html
Copyright © 2011-2022 走看看