打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Emacs+auto
  Clang是一个C/C++/ObjectC语言的编译器前端,采用LLVM作为后端提供了一个性能接近GCC的编译器。不过我们现在的目标是使用Clang帮助进行代码分析和补全。

首先去Clang的官方网站下载一套编译安装,官方网站地址是:http://clang.llvm.org/

接下来需要安装auto-complete,下载一份,http://cx4a.org/software/auto-complete/,解压缩后,安装,只需要load-file install.el然后按照提示复制4行到.emacs文件即完成了安装。

接下来是auto-complete的clang插件,下载地址,https://github.com/brianjcj/auto-complete-clang
解压缩到任何地方,并将该路径add-to-list,例如:
  1. (add-to-list 'load-path "~/.mylisp/")  



接下来做一些配置,按照给出的模板进行修改即可:
  1. (require 'auto-complete-clang)  
  2. (setq ac-clang-auto-save t)  
  3. (setq ac-auto-start t)  
  4. (setq ac-quick-help-delay 0.5)  
  5. ;; (ac-set-trigger-key "TAB")  
  6. ;; (define-key ac-mode-map  [(control tab)] 'auto-complete)  
  7. (define-key ac-mode-map  [(control tab)] 'auto-complete)  
  8. (defun my-ac-config ()  
  9.   (setq ac-clang-flags  
  10.         (mapcar(lambda (item)(concat "-I" item))  
  11.                (split-string  
  12.                 "  
  13.  /usr/include/c++/4.4  
  14.  /usr/include/c++/4.4/i486-linux-gnu  
  15.  /usr/include/c++/4.4/backward  
  16.  /usr/local/include  
  17.  /usr/lib/gcc/i486-linux-gnu/4.4.5/include  
  18.  /usr/lib/gcc/i486-linux-gnu/4.4.5/include-fixed  
  19.  /usr/include/i486-linux-gnu  
  20.  /usr/include  
  21. ")))  
  22.   (setq-default ac-sources '(ac-source-abbrev ac-source-dictionary ac-source-words-in-same-mode-buffers))  
  23.   (add-hook 'emacs-lisp-mode-hook 'ac-emacs-lisp-mode-setup)  
  24.   ;; (add-hook 'c-mode-common-hook 'ac-cc-mode-setup)  
  25.   (add-hook 'ruby-mode-hook 'ac-ruby-mode-setup)  
  26.   (add-hook 'css-mode-hook 'ac-css-mode-setup)  
  27.   (add-hook 'auto-complete-mode-hook 'ac-common-setup)  
  28.   (global-auto-complete-mode t))  
  29. (defun my-ac-cc-mode-setup ()  
  30.   (setq ac-sources (append '(ac-source-clang ac-source-yasnippet) ac-sources)))  
  31. (add-hook 'c-mode-common-hook 'my-ac-cc-mode-setup)  
  32. ;; ac-source-gtags  
  33. (my-ac-config)  



需要说明的几点是:
ac-clang-flags是头文件的目录,根据系统的不同可能你的头文件目录也会不同,列出系统中所有的头文件目录方法是:
  1. $ echo "" | g++ -v -x c++ -E -  


你可能会找到类似这样的行:
  1. #include "..." search starts here:  
  2. #include <...> search starts here:  
  3.  /usr/include/c++/4.4  
  4.  /usr/include/c++/4.4/i486-linux-gnu  
  5.  /usr/include/c++/4.4/backward  
  6.  /usr/local/include  
  7.  /usr/lib/gcc/i486-linux-gnu/4.4.5/include  
  8.  /usr/lib/gcc/i486-linux-gnu/4.4.5/include-fixed  
  9.  /usr/include/i486-linux-gnu  
  10.  /usr/include  
  11. End of search list.  


中间列出的那些目录就是你需要的,替换上面代码中的目录即可


ac-auto-start参数是ac的提示是否自动启动,如果不自动启动的话,将它设为nil即可,你需要补全的时候自己按快捷键进行补全,快捷键的设置方法是:
  1. (define-key ac-mode-map  [(control tab)] 'auto-complete)  


如果这一项设置为t,ac则会自动在有补全的地方列出可补全的项。


有的机器使用的是旧版本的clang,比如假如你使用某个古代发行版自带的旧版本clang,不支持通过stdio进行交互,则需要自动保存文件才能正确调用clang获取补全提示,设置的方法是:
  1. (setq ac-clang-auto-save t)  


当然新版本的clang可能就不需要这一项了。





本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
让Emacs功能强于source Insight
emacs进行php编程时使用cscope
Emacs:Eldoc 全局化了
程序员的emacs配置大全(cedet+ecb+cscope+gdb-ui)-jzj
windows下的emacs23配置 - Emacs - 晋如,摧如
[程序员小助手] Emacs,最强编辑器,没有之一
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服