尝试过好多代码补全插件,目前找到一款用着比较满意的,前端用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 @ 2020-07-18 22:04 CobbLiu 阅读(1616) 评论(2) 推荐(1) 编辑
摘要: 1,File Systems Unfit as Distributed Storage Backends: Lessons from 10 Years of Ceph Evolution 作者首先总结了在分布式文件系统Ceph多年开发过程中的经验教训,然后介绍了团队开发的新型用户态存储后端BlueS 阅读全文
posted @ 2020-02-09 13:38 CobbLiu 阅读(1904) 评论(0) 推荐(1) 编辑
摘要: TCMalloc的一些细节 阅读全文
posted @ 2019-07-16 18:39 CobbLiu 阅读(3320) 评论(0) 推荐(0) 编辑
摘要: SizeMap tcmalloc通过classid将不同的小对象映射到不同的对象桶中,sizemap记录了一些对象大小和对象class的映射以及反向映射,除此之外,还记录了一些ThreadCache与CentralCache层交互的时候批量处理的一些数据。 class_to_size_[kClass 阅读全文
posted @ 2019-05-12 23:07 CobbLiu 阅读(1605) 评论(0) 推荐(0) 编辑
摘要: API是软件系统的核心,而软件系统的复杂度Complexity是大规模软件系统能否成功最重要的因素。但复杂度Complexity并非某一个单独的问题能完全败坏的,而是在系统设计尤其是API设计层面很多很多小的设计考量一点点叠加起来的(也即John Ousterhout老爷子说的Complexity is incremental【8】)。成功的系统不是有一些特别闪光的地方,而是设计时点点滴滴的努力积累起来的。 阅读全文
posted @ 2019-01-03 22:40 CobbLiu 阅读(572) 评论(0) 推荐(1) 编辑
摘要: How the production environment at Google fits together for networking, monitoring and finishing with a sample service architecture at Google. I am a S 阅读全文
posted @ 2018-11-23 20:04 CobbLiu 阅读(328) 评论(0) 推荐(0) 编辑
摘要: A brief tour of some of the important components of a Google Datacenter. A photo of the interior of a real Google Datacenter in North Carolina. Seen h 阅读全文
posted @ 2018-11-23 20:03 CobbLiu 阅读(247) 评论(0) 推荐(0) 编辑
摘要: CAP理论的表述很好地服务了它的目的,即开阔设计师的思路,在多样化的取舍方案下设计出多样化的系统。在过去的十几年里确实涌现了不计其数的新系统,也随之在数据一致性和可用性的相对关系上产生了相当多的争论。“三选二”的公式一直存在着误导性,它会过分简单化各性质之间的相互关系。现在我们有必要辨析其中的细节。实际上只有“在分区存在的前提下呈现完美的数据一致性和可用性”这种很少见的情况是CAP理论不允许出现的。 虽然设计师仍然需要在分区的前提下对数据一致性和可用性做取舍,但具体如何处理分区和恢复一致性,这里面有不计其数的变通方案和灵活度。当代CAP实践应将目标定为针对具体的应用,在合理范围内最大化数据一致性和可用性的“合力”。这样的思路延伸为如何规划分区期间的操作和分区之后的恢复,从而启发设计师加深对CAP的认识,突破过去由于CAP理论的表述而产生的思维局限。 阅读全文
posted @ 2018-11-06 21:15 CobbLiu 阅读(651) 评论(0) 推荐(0) 编辑
摘要: Emacs 不将M-Del删除的单词加入粘贴板 阅读全文
posted @ 2018-10-23 10:48 CobbLiu 阅读(381) 评论(0) 推荐(0) 编辑
摘要: PID控制算法是工业界使用极其广泛的一个负反馈算法,相信这个算法在做系统软件时也有用武之处,这里摘录了知乎上的一篇文章,后面学习更多后自己总结一篇 阅读全文
posted @ 2018-10-18 10:09 CobbLiu 阅读(2046) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示