Emacs中使用company + irony实现C++代码补全

尝试过好多代码补全插件,目前找到一款用着比较满意的,前端用company,后端主要用irony,基本上对于C/C++项目来说使用体验非常好,其他语言的未体验过。

下面是主要配置,一些插件可能需要emacs版本 >= 25.1

复制代码
 1 ;; 代码补全的配置
 2 ;; ===================================================
 3 (require 'company)
 4 (require 'irony)
 5 (require 'company-irony)
 6 (add-hook 'c++-mode-hook 'company-mode)
 7 (add-hook 'c-mode-hook 'company-mode)
 8 (add-hook 'c++-mode-hook 'irony-mode)
 9 (add-hook 'c-mode-hook 'irony-mode)
10 (add-hook 'irony-mode-hook 'irony-cdb-autosetup-compile-options)
11 (setq company-idle-delay 0)
12 (setq company-minimum-prefix-length 2)
13 (setq company-dabbrev-downcase nil)
14 (add-to-list 'company-backends 'company-dabbrev)
15 (add-to-list 'company-backends 'company-dabbrev-code)
16 (add-to-list 'company-backends 'company-files)
17 (add-to-list 'company-backends 'company-semantic)
18 (add-to-list 'company-backends 'company-keywords)
19 (add-to-list 'company-backends 'company-irony)
20 ;;(add-to-list 'company-backends 'company-gtags)
21 (add-to-list 'company-backends 'company-capf)
22 (require 'company-c-headers)
23 (add-to-list 'company-c-headers-path-system "/usr/include/c++/4.9.2/")
24 (add-to-list 'company-backends 'company-c-headers)
25 (global-set-key (kbd "C-;") 'company-complete-common)
26 ;;使用M-n 和 M-p 选择候选项
27 ;;company 颜色设置
28 (defun theme-dark ()
29   (interactive)
30    (set-face-foreground 'company-tooltip "#000")
31     (set-face-background 'company-tooltip "#fff")
32      (set-face-foreground 'company-scrollbar-bg "#fff")
33       (set-face-background 'company-scrollbar-fg "#999")
34 )
35 (theme-dark)
复制代码

对于Irony的话,需要在emacs中手动执行 M-x irony-install-server 来安装好irony的后端server。

另外有了irony和company-c-headers之后,如果你用的是一个大型项目,那么company-gtags就不需要了,因为company-gtags会使得大型项目下company的提升项居多,貌似是将当前项目所有的符号都作为备选了(也可能是我没配置对)。

 

参考:

http://cachestocaches.com/2015/8/c-completion-emacs/

posted @   CobbLiu  阅读(1617)  评论(2编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示