部门主管
搜索引擎上关于emacs代码补全的文章一大堆,大多讲的是cedet、semantic、ctags之类的。我自己也尝试过一些“主流”的组合, 奈何都不来感啊。用得最长的也就auto-complete了,但是用的也仅仅是它自带的buffer内内容的补全,基本不涉及语义的补全。偶然发现了 gccsense这个东西,简单配置了下,比较满意。有图有真相
Emacs gccsense
auto-complete提供一个补全的前端,通过不同的后端,支持ctags等。 gccsense是补全的后端,能提供符合语义的补全。因为它是直接利用gcc的代码,使用了编译器内在的分析器。它是一个独立的程序,目前通过插件可以被用到emacs和vim的补全上。因为是用的gcc的代码,理论上可以补全所有gcc支持的语言。 auto-complete和gccsense是一家出的。
下载:http://cx4a.org/software/auto-complete/ 配置.emacs,我的auto-complete在/mydoc/lib/emacs-plugins/下
; auto complete(add-to-list 'load-path "/mydoc/lib/emacs-plugins/auto-complete") (require 'auto-complete-config) (add-to-list 'ac-dictionary-directories "/mydoc/lib/emacs-plugins/auto-complete/ac-dict") (ac-config-default)
gcc-code-assist就是在gcc代码基础上改的,主要用来从代码中提取补全信息
sudo apt-get install build-essential libgmp3-dev libmpfr-dev flex ruby rubygems libsqlite3-ruby
其它系统,如freebsd、macos请自行参考用户手册。
$ tar xvjf gcc-code-assist-*.tar.bz2 $ cd gcc-code-assist-* $ ./configure --program-suffix=-code-assist --enable-languages=c,c++ --disable-bootstrap --disable-multilib $ make # -j2 $ sudo make install
安装成功之后执行下,如果有正常输出,就说明安装成功:
$ gcc-code-assist --version $ g++-code-assist --version
gccsense这个包包含一些辅助函数,以及编辑器的插件
$ cd gccsense-*$ sudo cp bin/* /usr/local/bin/
$ gccrec --version $ autopch --version
(require 'gccsense)
即可。 由于我的gccsense.el放到了。/mydoc/lib/emacs-plugins/c下,并且把auto-complete的补全命令绑定到了M+/上,所以这部分配置如下:
(add-to-list 'load-path "/mydoc/lib/emacs-plugins/c") (require 'gccsense) (global-set-key "\257" (quote ac-complete-gccsense))
ok,搞定。
在介绍使用前,简单介绍下几个主要模块的作用
#include <string> using namespace std; int main() { string s;}
gccrec g++-code-assist test.cpp
这里可以认为g++-code-assist就是g++,参数一样的,比如-I -l之类的。
这里贴上我的emacs相关部分的配置文件。 我把补全的命令绑定到了M-/上面, gccsense.el放到了/mydoc/lib/emacs-plugins/c/下面,所以这样写:
gccsense用户手册,http://cx4a.org/software/gccsense/manual.html
查看详细资料
TOP