饮食网站首页页面,什么平台打广告比较好免费的,皮具网站建设服装网站,免费网络电视app自定义语言插件可以提供两种主要类型的代码完成:reference completion 和Contributor-based completion的完成。前者更容易实现,但只支持基本的补全动作。后者会复杂一些,但功能更强大支持所有三种完成类型(基本、智能和类名),并且可用于实现关键字完成等。
一、referen…自定义语言插件可以提供两种主要类型的代码完成:reference completion和Contributor-based completion的完成。前者更容易实现,但只支持基本的补全动作。后者会复杂一些,但功能更强大支持所有三种完成类型(基本、智能和类名),并且可用于实现关键字完成等。
一、reference completion
为了填充完成列表,IDE 调用PsiReference.getVariants()插入符号位置的引用或将放置在插入符号处的虚拟引用,这个方法需要返回包含字符串、实例或类实例的对象数组,PsiElement或LookupElement。如果PsiElement在数组中返回一个实例,完成列表将显示该元素的图标。
最常见的实现getVariants()方式是使用与PsiReference.resolve()中相同的函数向上遍历树。收集PsiScopeProcessor给execute()方法的所有声明并将它们作为数组返回以填充完成列表。 实现时可参考PsiSymbolReference提供的PsiCompletableReference接口。
二、Contributor-based completion 需要实现CompletionContributor接口,并且注册com.intellij.completion.contributor扩展点并指定language属性。模式是针对叶 PSI 元素进行检查的。如果要匹配复合元素,请使用withParent()或withSuperParent()方法。一个参考示例:CompletionContributor。 三、Lookup items
完成列表中显示的项目由LookupElement接口的实例表示,由LookupElementBuilder类创建。对于每个查找元素,您可以指定以下属性: