opensuse 13.2 emacs 下自动补全工具 emacs-clang-complete-async 的安装
折磨了好久总算把这个能够更具头文件自动补齐的插件emacs-clang-complete-async 装上了。写C,C++省事多了。
我的环境:opensuse13.2
配置过程分三步走:
1.安装llvm,这个里面有很多工具,其中有的工具是emacs-clang-complete-async 编译需要的,个人感觉好像不装也行,但会麻烦好多好多。怎么装,本人直接用zypper,安装下图中所有i标记的包。当然你也可以去官网下载。

2.安装clang,这个就是必须的了,因为该工具需要从这个libclang库里面获取相关语法信息。同样安装下图中所有被i标记的项:

3.编译安装emacs-clang-complete-async 插件
首先把整个项目源码从github下载下来
cd ~/.emacs.d/ git clone https://github.com/Golevka/emacs-clang-complete-async.git
项目文件夹下有如下内容:
auto-complete-clang-async.el Makefile makefile.mk README.org screenshots src
我们接下来make一下,编译得到二进制文件 clang-complete.在Make过程中遇到了编译错误,cc: error: unrecognized command line option ‘-Wcovered-switch-default’。

可以看出这个是个检查switch语句的警告错误,我想,这个插件这么多人成功安装了代码肯定是没问题的,直接把这个选项去了也不会有什么影响。于是在MakeFile文件中找到了相关的设置,直接去掉。

怎么改呢?不难发现上图中“ $(shell $(LLVM_CONFIG) --cflags)”这一句便是相关编译器的选项设置。在命令行终端输入llvm-config --cflags可以看到它真正的内容是一系列编译选项。这就好办了,直接用llvm-config --cflags的输出去掉-Wcovered-switch-default’选项,然后替换相应的内容不就行了。于是修改MakeFile文件为:

大功告成,make以下得到了我们需要的二进制可执行文件clang-coplete.
最后一部了,在emacs中加入该插件。找到你的emacs配置文件,一般是.emacs(一般来说为了方便管理一般在.emacs中会载入用户自己的配置避免搞乱,所以我一般就在emacs默认载入的.gnu-emacs-custom里面改.在哪里都可以)。把编译出来的clang-complete 和auto-complete-clang-async.el 复制到.emacs.d下
cp clang-complete auto-complete-clang-async.el ~/.emacs.d
在你的配置文件中加入以下代码:
(add-to-list 'load-path "~/.emacs.d") (require 'auto-complete-clang-async) (defun ac-cc-mode-setup () (setq ac-clang-complete-executable "~/.emacs.d/clang-complete") (setq ac-sources '(ac-source-clang-async)) (ac-clang-launch-completion-process) ) (defun my-ac-config () (add-hook 'c-mode-common-hook 'ac-cc-mode-setup) (add-hook 'auto-complete-mode-hook 'ac-common-setup) (global-auto-complete-mode t)) (my-ac-config)
一开始我直接copy了emacs-clang-complete-async 项目下README中的代码,然后我忐忑的打开emacs,颤抖的键入string s;s. 我擦,,,s.,,s . 说好的自动补齐呢?在开一次,发现报错了,auto-complete-clang-async无法载入。顿时送了口气,这一般都是路径的问题,果断再次编辑emacs配置文件,加入了 (add-to-list 'load-path "~/.emacs.d")。成功搞定。
历尽千辛万苦,终于走到这里。上张效果图:


我基本是参考这篇博文配置的(http://blog.csdn.net/flydirk/article/details/8506850)
本文原创,欢迎转载!
浙公网安备 33010602011771号