emacs的自动补全
前言
长久以来由于使用spacemacs一直为emacs的自动补全头疼,
因为配置backends的方法较为隐秘,
在各种模式下backends会改变,
知道重新看了子龙山人的教程才发现backends也比较简单.
补全方案的机制
在 company-backends
变量中存储着各种补全的方案.
比如company-mode包默认的配置是
1 | (company-bbdb company-eclim company-semantic company-clang company-xcode company-cmake company-capf company-files |
emacs从头到尾匹配,如果匹配则使用该后端并忽略之后的后端.
如果希望匹配到后仍然继续使用之后的backends,则再装进括号,称为group backend.
常见的补全方案
排序方案 | 作用 |
---|---|
company-bbdb | 可能和联系人列表有关 |
company-eclim | eclim(eclipse+vim)相关 |
company-semantic | c,c++语法静态解析 |
company-clang | C,c++,c#等一系列语言相关 |
company-xcode | 对xcode的项目有补全作用 |
company-cmake | 对cmake文件有补全作用 |
company-capf | completion-at-point-functions? |
company-files | 根据文件名进行补全 |
company-dabbrev-code | 根据所有buffer中的代码补全 |
company-gtags | 根据gtags(维护一套关键字进行索引并方便跳转,company获得列表来补全) |
company-etags | 类似gtags |
company-keywords | 可能类似dabbrev |
company-oddmuse | 编辑Oddmuse(一种wiki引擎)wiki文件的补全 |
company-dabbrev | 所有buffer中的内容进行补全,默认不理会scratch中内容 |
一种排序方法
一般把一些依赖固定模式或语言的补全放在最前方,
若非常重视文件名的补全,也可以将之放在前方.
代码变量名补全等等的放在一个group中,置中.
而buffer内容补全的放在最后.
配置的方法
1 | ;; 配置自动补全后端 |
备注
虽然在spacemacs中,补全方案的列表会随着列表改变,
(spacemacs还隐式调用了add-hook等方法导致不好配置)
但在自定义的配置中,这些补全方案在各个模式下是不会变的.