Emacs 自動補全,最好的插件當屬 ycmd。如下記錄個人安裝過程。html
1. 安裝 ycmd serverpython
github 官方地址: https://github.com/Valloric/ycmdc++
- git 克隆 ycmd 到本地 ~/ycmdgit
$ git clone https://github.com/Valloric/ycmd.git ~/ycmdgithub
- 安裝必要的編譯工具和庫json
$ build-essential cmake python-dev工具
- 下載完整的 submodule (比較大哦。。。)post
$ git submodule update --init --recursiveui
- 編譯 (比較慢哦。。。)插件
$ cd ~/ycmd
$ ./build.py --all
編譯完成以後,會在當前目錄下生成一個 ycmd 文件夾,這個文件夾中有一些python腳本,emacs-ycmd就從這個文件夾中啓動ycmd server。
2. 安裝 ycmd client,還有必要的工具
- 打開 Emacs,命令 M-x list-packages, 分別安裝 ycmd, company-ycmd, flycheck-ycmd
3. 配置,以下內容添加到 ~/.emacs
;;;;================================================= < for ycmd start >
;;;; To use ycmd-mode in all supported modes
(require 'ycmd)
(add-hook 'after-init-hook #'global-ycmd-mode)
;;;; Specify only support c/c++ mode
;;(require 'ycmd)
;;(add-hook 'c++-mode-hook 'company-mode)
;;(add-hook 'c++-mode-hook 'ycmd-mode)
;;;; Specify how to run the server
(set-variable 'ycmd-server-command '("/usr/bin/python" "/home/cobbliu/ycmd/ycmd"))
;;;; Specify a global emacs configuration
(set-variable 'ycmd-global-config "/home/cobbliu/ycmd/examples/.ycm_extra_conf.py")
;;;; Completion framework
(require 'company-ycmd)
(company-ycmd-setup)
(add-hook 'after-init-hook #'global-company-mode)
;;;; Enable flycheck
(require 'flycheck-ycmd)
(flycheck-ycmd-setup)
(add-hook 'after-init-hook #'global-flycheck-mode)
;;;; Set always complete immediately
(setq company-idle-delay 0)
補全的時候,彈出 tip 窗口,用 Meta + n 或 Meta + p 去 cycle 可選項,選中後,直接按 Enter 確認。
對於大型項目來講,爲ycmd server提供每一個cpp文件的編譯列表會使ycmd更快速地補全,這個文件名叫compile_commands.json。生成這個文件的方法見:https://github.com/astroidmail/astroid/issues/14
生成好compile_commands.json以後,將它放到你的項目根目錄下面,而後再在.ycm_extra_conf.py配置中將項目根目錄寫到compilation_database_folder = '/Users/cobbliu/share/'中。
參考:http://www.cnblogs.com/gaowengang/p/5745027.html