zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    程序员面试中有几大法则
    实现立方体旋转
    为什么技术与产品沟通起来总是那么痛苦
    移动互联网下半场的面试真经,让你进入 BAT 不再是梦
    Javascript+H5实现打小地鼠游戏
    Python多进程应用
    Python数据分析笔记:聚类算法之K均值
    给新手程序员的16个工作必备小妙招,省下时间去LOL吧!
    MySQL数据库开发常见问题及优化
    java中的四种引用类型
  • 原文地址:https://www.cnblogs.com/cobbliu/p/13337763.html
Copyright © 2011-2022 走看看