# 扩展
# 扩展
除了为按键和toolbar增加Actions之外,还提供了扩展方式来扩展idea的功能
用扩展增加的常见功能如下:
-
com.intellij.toolWindow 扩展点可以增加 tool windows (显示在用户界面边侧的窗口,如project, gradle的窗口);
-
com.intellij.applicationConfigurable 和 com.intellij.projectConfigurable 扩展点可以增加Settings/Preferences 对话框
-
自定义语言插件 使用了大量的扩展点来扩展语言的功能
提示
有1000多个扩展点来扩展ide的功能
# 可用的扩展点
扩展点和监听器列表(Extension Point and Listener List ) 列举了所有的 IntelliJ Platform的扩展点,
针对于特定ide的扩展点可看 文档
可以搜索
扩展点的用法
此外 在 plugin.xml里 可以联想出所有的扩展点,如下图:
想了解更多,可查看 文档
# 声明扩展
需要注意以下3点
-
在plugin.xml增加extensions标签,
如果扩展继承于IntelliJ Platform的方法,则defaultExtensionNs=”com.intellij”
如果扩展继承于 第三方插件 ,则设置 defaultExtensionNs=”第三方插件的id”,详看下面代码 -
在extensions标签下增加子标签,子标签的名称需要和你开发的扩展点名称保持一致 ,详看下面代码
-
根据扩展点的类型,需要以下操作,详看下面代码
-
如果扩展点是使用 interface 属性声明的,那么需要设置 implementation=”class的全限定名称”
-
如果扩展点是使用 beanClass 属性声明的,那么需要在指定的类上加上注解 @Attribute
-
了解更多详情,请看 文档
# 扩展的默认属性
-
id :唯一的id
-
order :可以使用 first, last or before [插件id],after [插件id] 来指定顺序
-
os 指定系统,如果设置了os=”windows”,那么将只在windwos系统idea自定义插件开发下才注册这个扩展
如果在某个扩展中需要退出程序,可以在扩展的构造器(constructor)中抛出 ExtensionNotApplicableException
# 扩展的其它属性
以下几个属性需要配置为类的全限定名称( fully qualified class name)
-
implementation
-
className
-
serviceInterface/serviceImplementation
-
以Class结尾的属性
A required parent type can be specified in the extension point declaration via nested <with>:
Property name language (or ending in *Language, 2020.2+) resolves to all present Language IDs.
Similarly, action resolves to all registered <action> IDs.
Specifying @org.jetbrains.annotations.Nls validates a UI String capitalization according to the text property Capitalization enum value (2019.2 and later).
Attributes with Enum type support code insight with lowerCamelCased notation (2020.1 and later).
今天的文章
idea自定义插件开发分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/130122.html