Code Completion
自定义语言插件可以提供两种主要类型的代码完成:引用完成和基于贡献者的完成.
参考完成更容易实现,但仅支持基本完成操作.
基于贡献者的完成提供了更多功能,支持所有三种完成类型(基本,智能和类名),并且可用于实现关键字完成.
###参考完成
要填写完成列表,IDE会调用
要么在插入符号位置的参考,要么在放置在插入符号的虚拟参考上.
此方法需要返回包含字符串的对象数组,
实例或实例
类.
如果一个
实例在数组中返回,完成列表显示元素的图标.
实现getVariants()
的最常用方法是使用相同的函数来向上移动树
和不同的实现
它收集传递给它的processDeclarations()
方法的所有声明,并将它们作为数组返回以填充完成列表.
###基于贡献者的完成
实施
界面使您可以最大程度地控制语言的代码完成操作.
请注意,该类的JavaDoc包含用于实现代码完成的详细FAQ.
使用的核心方案
包括调用extend()
方法并传入* pattern ,指定适用此完成变量的上下文,以及生成要在完成列表中显示的项目的 completion provider *.
例:
用于在MANIFEST.MF文件中完成关键字.
请记住,针对叶PSI元素检查模式. 如果你
想要匹配复合元素,使用withParent
或withSuperParent
方法.
完成列表中显示的项目由实例表示
接口.
这些实例通常是通过
类.
对于每个查找元素,您可以指定以下属性:
*文本,尾部文本和文本类型. 尾部文本显示在主项目文本旁边,不用于前缀匹配,例如,可用于显示方法的参数列表. 例如,类型文本在查找列表中右对齐显示,可用于显示返回类型或包含方法的类.
*图标
*文字属性(粗体,删除线等)
*插入处理程序. insert处理程序是在选择项时调用的回调函数,可用于执行文本的其他修改(例如,放入方法调用的括号中)