semantic 的 navigation + 基于 Clang 的 auto complete 比 semantic 的 补全好用.
另外, 补全时 : 还是和 yassnippet 冲突 ( yas-expand-from-trigger-key ) , capitaomorte 的 issue list 中 也表示 暂时无能为力.
虽然会自动弹出 imenu , 但用起来还是不顺手. 可以考虑改成别的 key sequence .
### 工作流程
auto-complete 是 自动开启的 , 输入 n 个字符后 , 跳出 candidate的 imenu 让你选择 , 在 TAB 选择了某个 candidate 之后 , 就 RET 来 ac-complete :
根据 candidate 的 数量 , TAB 会 呈现不同的功能.
-
Case that only one candidate remains
If only on candidate remains, the candidate will be used to complete. 只有一个candidate 就是 ac-complete
-
Case that there is common part among candidates 多个 candidate , 补全 common part
For example, if all candidates start with "set", it means they have common part "set". So TAB completes "set" at first.
-
Otherwise, select candidates in cycle by typing TAB. 否则, 循环 多个 candidate .
### 一些设置
AC user manual 的 7.Tips 中 提到了一些. 其中 :
ac-dwin , ac-use-quick-help, ac-show-menu-immediately-on-auto-complete 和 ac-expand-on-auto-complete 都是实用的设置 .
然而 , 看了一下src,这些变量都是 defcustom option t , 也就是 默认打开. 所以, 就不再配置了. ( defcustom option standard doc [keyword value]... ).
至于 trigger key ( 开始 ac-expand ) , 只有当 ac-auto-start 为 nil 时 才有效 , 而 ac-auto-start 默认是打开的. trigger key 的 设置 于我,没有意义.
另外, ac-sources 也是很重要的设置 . 具体参考 manual .
但是,我的host 上 ac-source-semantic 有 bug .
### 有意思的特性 ,
1. auto-complete 的 fuzzy matching
### 做的几个修改:
(1) 把 semantic 添加 include 文件的步骤作为 hook 的一部分 , 放到 my-variables.el 中去 .
(2) 取消了 ac-clang-config , 放到 my-variables.el 中去 ; 讲 属于 auto-complete.el 的 配置 全部放入到 auto-complete-init.el , 这样 , 这两个措施使得 auto-complete-config.el 更加干净.
### more advanced :
ref : http://www.emacswiki.org/emacs/AutoCompleteSources 给出了 python , semantic 等的配置.
http://cx4a.org/software/auto-complete/manual.html#Filtering_Completion_Candidates AC user manual