# 设置指南
设置在 Windows中是Settings,在macOS中是Preferences,所有基于IntelliJ Platform平台的IDE中的设置都由Settings 控制。
插件使用持久化模型 来创建和存储它们的配置。可以在IDE的设置
对话框中添加用户自定义的设置项。
设置(Settings)可以设置不同级别的作用域。当前文档主要是添加项目级、应用级和全局级(Project and Application,Global)的自定义设置项
# 设置(Settings)的扩展点
根据设置项的作用域,可以使用两个扩展点 [extension points (缩写为EP)] 之一在 plugin.xml 注册自定义设置项。两个扩展点大部门的属性是共享的。
项目级、应用级(Project and Application)的设置项不能使用运行时依赖,需要提供一个Configurable
接口的实现类,具体可以在下文中的扩展点的实现类中查看如何实现。
提示
由于性能原因,在plugin.xml注册的 ‘Settings’ 实现类应尽量配置更多的属性。如果不配置,这个组件就需要从实现类中获取所需要的属性,会降低 UI 响应能力。
# 注册应用级(application-level)设置项
用com.intellij.applicationConfigurable 扩展点来注册应用级的设置项
# 注册项目级(project-level)设置
用 com.intellij.projectConfigurable 扩展点来注册项目级(project-level)的设置
# 注册点的属性
鼓励开发者去查看 Configurable
和 ConfigurableProvider 的 Javadoc 注释,下面内容对注释提供了补充说明。
# 属性列表
下面包括com.intellij.projectConfigurable 和com.intellij.applicationConfigurable 扩展点的属性描述
Configurable 实现类的全限定命名,实现方式可查看下文文档 Configurable接口providerConfigurableProvider看下文注意事项1
ConfigurableProvider 实现类的全限定命名,实现方式可查看下文文档 ConfigurableProvider接口nonDefaultProjectConfigurableY只能在项目级
com.intellij.projectConfigurable 扩展点使用,false表示所有的项目设置都可见,true表示除了 default project
外都可见displayNameConfigurableProvider
Configurable看下文注意事项2在设置左边列表显示的名称(不支持文本国际化),如果要支持国际化,使用下面的属性key and bundleConfigurableProvider
Configurable看下文注意事项2在设置左边列表显示的名称(支持文本国际化)idConfigurableProvider
ConfigurableY唯一性,可以使用实现类的全限定命名parentIdConfigurableProvider
ConfigurableY放在哪个设置组下面,可选值参考 设置的id列表 ,groupId已失效(看下文注意事项3)groupWeightConfigurableProvider
ConfigurableN设置的显示顺序,默认为0,排在最后dynamicConfigurable.CompositeN该设置的子设置项都是通过
getConfigurables() 方法获取,不推荐使用,因为会加载很多类,尽量使用XML属性配置子设置项childrenEPNameConfigurableN扩展点的全限定命名,通过这个扩展点来获取子设置
注意事项:
-
instance 或 provider 必须指定一个
-
displayName 和 key and bundle 必须指定一个,文本不需要国际化使用displayName,需要国际化使用key and bundle
-
如果同时配置了groupId和parentId,idea会提示警告信息。parentId列表见下文 设置的id列表
# 设置的id列表
上文中的parentId的列表
groupId和
parentId都未配置,则会放入该设置组,不建议,详情看
other 的描述appearanceAppearance & BehaviorbuildBuild, Execution, Deploymentbuild.toolsBuild Integration上面build的子组,主要包括构建插件,例如 maven ,gradle等editorEditor编辑器相关languageLanguages and Frameworks和使用的编辑语言相关的配置tools3rd Party Settings三方设置,如何 SSH终端配置,管理服务器密码等rootSuper Parent所有设置的超父类,不建议使用otherCatch-all不建议使用它,可以用
tools 代替projectProject-related Settings不建议使用,主要存储项目相关的设置
# 扩展点的实现类
com.intellij.projectConfigurable 和com.intellij.applicationConfigurable 扩展点的实现有以下2种方式:
-
Configurable
接口:提供 Swing 表单。大多数的设置都基于该接口或该接口的子类或超类 -
ConfigurableProvider
可以在运行时条件隐藏某一个设置项
# Configurable接口
intellij-community 大多数的设置项都基于 Configurable 接口或它的子类,例如 SearchableConfigurable
,推荐开发者阅读 Configurable接口的 Javadoc注释
# 构造器
实现类的构造器,必须满足以下一些条件
-
使用com.intellij.applicationConfigurable扩展点注册的实现类,必须有默认无参构造器
-
使用com.intellij.projectConfigurable扩展点注册的设置实现类,必须有带 Project
一个参数的构造器 -
从2020.2版本开始,不允许构造器注入其它参数(除了 Project )
对使用扩展点正确注册的设置项来说,用户不该设置,不会调用该实现类的构造器进行初始化。
注意
IntelliJ Platform 在后台线程中实例化Configurable实现类,所以在构造器中创建Swing组件会降低响应速度
# IntelliJ Platform和Configurable接口交互
Configurable接口常用方法如下:
-
在调用了Configurable.createComponent() 方法后会立即调用 Configurable.reset() 方法。所以不需要在构造函数或 createComponent() 方法中初始化设置项相关组件
-
上文中的构造器内容
-
一旦Configurable实例化,无论设置是否更改,或者用户在设置对话框菜单上选择其它条目,实例的生命周期都会继续
-
当用户了设置对话框里的OK或Cancel时,Configurable实例的生命周期才会结束。关闭设置对话框时会调用Configurable.disposeUIResources() 方法
打开设置对话框或显示某一个 Configurable,可以使用 ShowSettingsUtil 类
# Configurable的标记接口
基于Configurable的实现类也可以实现标记接口,标记接口提供了一些特性
下面的标记接口,可以将 Swing表单信息传递给 IntelliJ Platform
- Configurable.NoScroll 通知设置对话框不能增加滚动条。默认情况下,设置的组件会放入一个带滚动条的面板里,这个接口可以删除滚动条
- Configurable.NoMargin 通知设置对话框不能添加空边框。默认情况下,插件的组件会添加一个空边框
# 基于Configurable的其它接口
IntelliJ Platform有一些基于 com.intellij.openapi.options.ConfigurableEP 特定功能的类。例如:Settings/Preferences | Editor | General | Appearance 中可以使用 EditorSmartKeysConfigurableEP和com.intellij.editorSmartKeysConfigurable 扩展点来注册设置项
# 示例
可以参考以下实现:
-
ConsoleConfigurable
应用级设置(application configurable) -
AutoImportOptionsConfigurable
项目级设置(project configurable)
# ConfigurableProvider接口
ConfigurableProvider
只在满足某些条件的时候提供 Configurable实现类。IntelliJ Platform 先调用ConfigurableProvider.canCreateConfigurable() 方法,进行逻辑判断,返回true 表示当前设置是有效的,然后调用 ConfigurableProvider.createConfigurable() 方法获取设置项。
ConfigurableProvider 是通过属性列表 中的provider 属性来指定的
示例: RunToolbarSettingsConfigurableProvider
今天的文章
idea插件配置分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/140675.html