之前在论坛里询问过如何编写 company 后端。后来自己研究了一下发现官方文档写的就已经不错了。整体实现起来还是挺简单的。 现在支持的能力:
- 补全基本关键字
- 根据当前位置判断能用的补全候选
- 补全候选项包含本文件的自定义 message 和 enum
实现原理:
- 利用 imenu 获取当前文件都自定义类型
- 利用正则判断找明显的分割符,判断当前位置所在节点
未必实现的内容:
- import 进来的包里的自定义类型没有保护在候选项里面
- 基于 imenu,如果 imenu 没有 rescan 可能有些新的自定义类型补全不出来
我还没弄清楚 company 的 meta 和 annotation 是什么作用,所以没有实现
happy hacking