报告在 plugin.xml 文件中注册的任何操作,并在其构造函数中初始化它们的表示(文本、描述和/或图标)。

这种做法不可取,因为它会导致加载文本、描述和/或图标,并强制创建可能并不总是必要的操作表示。 更有效的方式是利用 AnAction 和其他基类的无实参构造函数,并遵循设置文本、描述和图标的约定。 只有当操作实际显示在某个地方时,IntelliJ 平台才会加载文本、描述和图标。

设置文本、说明和图标的约定如下:

不良示例:


  // NewKotlinFileAction.kt
  internal class NewKotlinFileAction : AnAction(
    KotlinBundle.message("action.new.file.text"),
    KotlinBundle.message("action.new.file.description"),
    KotlinIcons.FILE
  )

  // plugin.xml
  <action
    class="org.jetbrains.kotlin.idea.actions.NewKotlinFileAction"
  </action>

正确示例:


  // NewKotlinFileAction.kt
  internal class NewKotlinFileAction : AnAction()

  // plugin.xml
  <action
    id="Kotlin.NewFile"
    class="org.jetbrains.kotlin.idea.actions.NewKotlinFileAction"
    icon="org.jetbrains.kotlin.idea.KotlinIcons.FILE">
  </action>

  // KotlinBundle.properties
  action.Kotlin.NewFile.text=Kotlin 类/文件
  action.Kotlin.NewFile.description=创建新的 Kotlin 类或文件

2023.2 最新变化