idea配置插件配置

idea配置插件配置

# 设置指南

设置在 Windows中是Settings,在macOS中是Preferences,所有基于IntelliJ Platform平台的IDE中的设置都由Settings 控制。

插件使用持久化模型 来创建和存储它们的配置。可以在IDE的设置
open in new window
对话框中添加用户自定义的设置项。

设置(Settings)可以设置不同级别的作用域。当前文档主要是添加项目级、应用级和全局级(Project and Application,Global)的自定义设置项

# 设置(Settings)的扩展点

根据设置项的作用域,可以使用两个扩展点 [extension points (缩写为EP)] 之一在 plugin.xml 注册自定义设置项。两个扩展点大部门的属性是共享的。

项目级、应用级(Project and Application)的设置项不能使用运行时依赖,需要提供一个Configurable
open in new window
接口的实现类,具体可以在下文中的扩展点的实现类中查看如何实现。

提示

由于性能原因,在plugin.xml注册的 ‘Settings’ 实现类应尽量配置更多的属性。如果不配置,这个组件就需要从实现类中获取所需要的属性,会降低 UI 响应能力。

# 注册应用级(application-level)设置项

com.intellij.applicationConfigurable 扩展点来注册应用级的设置项



# 注册项目级(project-level)设置

com.intellij.projectConfigurable 扩展点来注册项目级(project-level)的设置



# 注册点的属性

鼓励开发者去查看 Configurable
open in new window
ConfigurableProviderJavadoc 注释,下面内容对注释提供了补充说明。

# 属性列表

下面包括com.intellij.projectConfigurablecom.intellij.applicationConfigurable 扩展点的属性描述

属性适用接口是否必填属性值instanceConfigurable看下文注意事项1
Configurable 实现类的全限定命名,实现方式可查看下文文档 Configurable接口providerConfigurableProvider看下文注意事项1
ConfigurableProvider 实现类的全限定命名,实现方式可查看下文文档 ConfigurableProvider接口nonDefaultProjectConfigurableY只能在项目级
com.intellij.projectConfigurable 扩展点使用,false表示所有的项目设置都可见,true表示除了 default project

open in new window
外都可见displayNameConfigurableProvider

Configurable看下文注意事项2在设置左边列表显示的名称(不支持文本国际化),如果要支持国际化,使用下面的属性key and bundleConfigurableProvider

Configurable看下文注意事项2在设置左边列表显示的名称(支持文本国际化)idConfigurableProvider

ConfigurableY唯一性,可以使用实现类的全限定命名parentIdConfigurableProvider

ConfigurableY放在哪个设置组下面,可选值参考 设置的id列表 ,groupId已失效(看下文注意事项3)groupWeightConfigurableProvider

ConfigurableN设置的显示顺序,默认为0,排在最后dynamicConfigurable.CompositeN该设置的子设置项都是通过
getConfigurables() 方法获取,不推荐使用,因为会加载很多类,尽量使用XML属性配置子设置项childrenEPNameConfigurableN扩展点的全限定命名,通过这个扩展点来获取子设置

注意事项:

  1. instanceprovider 必须指定一个

  2. displayNamekey and bundle 必须指定一个,文本不需要国际化使用displayName,需要国际化使用key and bundle

  3. 如果同时配置了groupIdparentId,idea会提示警告信息。parentId列表见下文 设置的id列表

# 设置的id列表

上文中的parentId的列表

parentId设置组名称描述defaultother如果
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.projectConfigurablecom.intellij.applicationConfigurable 扩展点的实现有以下2种方式:

  • Configurable
    open in new window
    接口:提供 Swing 表单。大多数的设置都基于该接口或该接口的子类或超类

  • ConfigurableProvider
    open in new window
    可以在运行时条件隐藏某一个设置项

# Configurable接口

intellij-community 大多数的设置项都基于 Configurable 接口或它的子类,例如 SearchableConfigurable
open in new window
,推荐开发者阅读 Configurable接口的 Javadoc注释

# 构造器

实现类的构造器,必须满足以下一些条件

  • 使用com.intellij.applicationConfigurable扩展点注册的实现类,必须有默认无参构造器

  • 使用com.intellij.projectConfigurable扩展点注册的设置实现类,必须有带 Project
    open in new window
    一个参数的构造器

  • idea配置插件配置从2020.2版本开始,不允许构造器注入其它参数(除了 Project

对使用扩展点正确注册的设置项来说,用户不该设置,不会调用该实现类的构造器进行初始化。

注意

IntelliJ Platform 在后台线程中实例化Configurable实现类,所以在构造器中创建Swing组件会降低响应速度

# IntelliJ Platform和Configurable接口交互

Configurable接口常用方法如下:

  • 在调用了Configurable.createComponent() 方法后会立即调用 Configurable.reset() 方法。所以不需要在构造函数或 createComponent() 方法中初始化设置项相关组件

  • 上文中的构造器内容

  • 一旦Configurable实例化,无论设置是否更改,或者用户在设置对话框菜单上选择其它条目,实例的生命周期都会继续

  • 当用户了设置对话框里的OKCancel时,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 中可以使用 EditorSmartKeysConfigurableEPcom.intellij.editorSmartKeysConfigurable 扩展点来注册设置项

# 示例

可以参考以下实现:

  • ConsoleConfigurable
    open in new window
    应用级设置(application configurable)

  • AutoImportOptionsConfigurable
    open in new window
    项目级设置(project configurable)

# ConfigurableProvider接口

ConfigurableProvider
open in new window
只在满足某些条件的时候提供 Configurable实现类。IntelliJ Platform 先调用ConfigurableProvider.canCreateConfigurable() 方法,进行逻辑判断,返回true 表示当前设置是有效的,然后调用 ConfigurableProvider.createConfigurable() 方法获取设置项。

ConfigurableProvider 是通过属性列表 中的provider 属性来指定的

示例: RunToolbarSettingsConfigurableProvider
open in new window

今天的文章
idea配置插件配置分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/135747.html

(0)
编程小号编程小号
上一篇 2024-09-03 22:30
下一篇 2024-09-03

相关推荐