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
  • 相关阅读:
    大数据测试2
    大数据测试3
    CROSS APPLY和 OUTER APPLY 区别详解
    SQL中的escape的用法
    Sql Server参数化查询之where in和like实现详解
    多行文本框换行符处理
    Cross Apply的用法
    交叉连接Cross Join的用法
    统计字符串中某个字符的个数
    JOIN用法
  • 原文地址:https://www.cnblogs.com/liyongmou/p/3044155.html
Copyright © 2011-2022 走看看