IDEA插件开发---Extensions

Posted 流子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA插件开发---Extensions相关的知识,希望对你有一定的参考价值。

扩展是插件扩展 IntelliJ 平台功能的最常用方式,这种方式不像向菜单或工具栏添加操作那么简单。

以下是使用扩展完成的一些最常见的任务:

com.intellij.toolWindow扩展点允许插件添加工具窗口(显示在 IDE 用户界面两侧的面板);

和扩展点允许插件将页面添加到com.intellij.applicationConfigurable设置/首选项对话框;com.intellij.projectConfigurable

自定义语言插件使用许多扩展点来扩展 IDE 中的各种语言支持功能。

平台和捆绑的插件中有 1000 多个扩展点,允许自定义 IDE 行为的不同部分。

探索可用的扩展
扩展点和侦听器列表列出了 IntelliJ 平台和 IntelliJ IDEA 中捆绑插件中的所有可用扩展点。此外,特定于 IDE 的专用扩展点和侦听器列表可在第 VIII 部分 - 产品特定下获得。通过IntelliJ Platform Explorer 浏览开源 IntelliJ 平台插件的现有实现中的用法。

或者(或者在使用 3rd 方扩展点时),可以在plugin.xml的块defaultExtensionNs内使用自动完成列出指定命名空间 ( ) 的所有可用扩展点。使用视图 | 查找列表中的快速文档以访问有关扩展点和实现的更多信息(如果适用)。有关更多信息和策略,请参阅探索 IntelliJ 平台 API。

声明扩展
自动完成、快速文档和其他代码洞察功能可用于扩展点标签和属性。

如果您的plugin.xml中尚不存在该元素,请将其添加到该元素。将属性设置为以下值之一:defaultExtensionNs

com.intellij,如果您的插件扩展了 IntelliJ 平台核心功能。

ID of a plugin,如果您的插件扩展了另一个插件的功能(必须配置Plugin Dependencies)。

向元素添加一个新的子元素。子元素的名称必须与您希望扩展访问的扩展点的名称匹配。

根据扩展点的类型,执行以下操作之一:

如果扩展点是使用interface属性声明的,对于新添加的子元素,将implementation属性设置为实现指定接口的类的名称。

如果扩展点是使用beanClass属性声明的,则对于新添加的子元素,设置所有使用@Attribute指定bean类中的注解注解的属性。

有关详细信息,请参阅声明扩展点部分。

为了阐明此过程,请考虑plugin.xml文件的以下示例部分,该部分定义了两个旨在访问IntelliJ 平台中的com.intellij.appStarter和扩展点的扩展,以及一个用于访问另一个插件中的扩展点的扩展:com.intellij.projectTemplatesFactoryanother.plugin.myExtensionPointanother.plugin

扩展默认属性 以下属性始终可用:

id- 唯一身份

orderfirst- 允许分别使用last或对所有定义的扩展进行before|after [id]排序

os- 允许限制给定操作系统的扩展,例如,os="windows"仅在 Windows 上注册扩展

如果扩展实例在某些情况下需要“退出”,它可以抛出ExtensionNotApplicableException它的构造函数。

扩展属性代码洞察
有几个工具特性可用于帮助在plugin.xml中配置 bean 类扩展点。

带有注释的属性@RequiredElement会自动插入并验证(2019.3 及更高版本)。如果允许给定属性具有显式空值,则设置allowEmpty为true(2020.3 及更高版本)。

与以下列表匹配的属性名称将解析为完全限定的类名称:

implementation

className

serviceInterface/serviceImplementation

以Class(区分大小写)结尾

可以通过嵌套在扩展点声明中指定所需的父类型:

属性名称language(或以*Language, 2020.2+ 结尾)解析为所有存在的LanguageID。

同样,action解析为所有已注册的ID。

指定根据文本属性枚举值(2019.2 及更高版本)@org.jetbrains.annotations.Nls验证 UI大小写。StringCapitalization

具有类型的属性支持使用lowerCamelCased表示法(2020.1 及更高版本)Enum的代码洞察力。

以上是关于IDEA插件开发---Extensions的主要内容,如果未能解决你的问题,请参考以下文章

IDEA插件安阿里编码规约安装与使用

IDEA插件安阿里编码规约安装与使用

以太坊钱包插件metamask离线安装

以太坊钱包插件metamask离线安装

怎样开发Chrome浏览器的插件

嗨:VSCode和IDEA都请安装上这个神奇的插件