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)

本文原创,欢迎转载!

posted @ 2015-09-17 17:17  RayBao  阅读(749)  评论(0)    收藏  举报