作者:winterTTr 转载请注明
我想,很多人都希望能够在vim或者emacs中实现C++的自动补全,我个人也不例外。
折腾过ctags,etags,cscope,最后也折腾过cedet。说实话,cedet还是可以实现补全的,只是速度有点让人难以忍受。
上面的几种工具,都是通过对源代码进行预处理,分析出其包含的代码信息。但是,大部分程序都是通过静态分析代码,这点在代码或者头文件频繁变更的情况下,是非常让人头痛的事情。像Visual Stuido中代码补全功能,基本上全是动态的,当头文件发生变化后,补全也会马上跟着变化。
我们是否也能实现这样的功能呢?
在clang这个llvm的C++前端出现之前,或许只能说遗憾了。静态的ctags补全必须完全扫描所有的文件,这样的效率是不可以接受的。
不过现在有了clang,这为我们系提供了非常好的工具,来实现这个愿望。
准备工作
1. 不用说了,肯定是需要clang了。
clang需要自己编译。由于我使用的是windows,所以,这里有一个我自己编译的版本。
https://github.com/winterTTr/emacs-of-winterTTr/tree/master/.emacs.d/extra-bin/clang
有关环境的设置,可以参考上篇文章。
(wttr/prepend-to-exec-path "~/.emacs.d/extra-bin/clang")
2. auto-complete和auto-complete-clang.el
auto-complete是一个非常好用的emacs扩展,而auto-complete-clang就是在这个扩展的基础上完成的。所以两者必须同时安装:
这里是我现在正在使用的auto-complete扩展,

本文介绍了如何在emacs环境下利用clang实现C++的动态代码补全功能,包括准备工作(需要clang和emacs扩展auto-complete及auto-complete-clang.el)和配置步骤(加载扩展,设置系统头文件目录)。作者指出,clang提供的动态补全避免了静态工具在头文件变更时的不准确问题,提高了开发效率。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



