1、定义一个基本的命名元素接口CustomNamedElement,继承自PsiNameIdentifierOwner。如图
2、创建一个CustomNamedElementImpl类,继承自ASTWrapperPsi苇质缵爨Element类,并且实现CustomNamedElement接口。如图
3、定义一个帮助方法类,用于生成PSI元素。如图
4、创建一个元素工厂类CustomElementFactory,用于显示错误信息。如图
5、更新语法并重新生成解析器现在我们需要对语法文件进行相应的修改,并重新生成解析器和PSI类。如图
6、在protobuf.bnf文件上右键,选中生成解析代码,重新运行工程生成解析器。如图
7、定义一个引用类,从使用中解析属性获取其引用。如图
8、创建一个自定义引用类继承自PsiReferenceBase,实现PsiPolyVariantReference类。如图
9、定义一个引用贡献类,允许你从其他语言如java你语言的元素提供参考。让我们为属性的每个用法贡献一个引用。如图
10、在plugin插件配置文件中,配置引用扩展。如图
11、运行工程,正如您看到的那样,IDE现在解析属性并提供完成。如图