Reports any actions that are registered in the plugin.xml file and instantiate
the com.intellij.openapi.actionSystem.Presentation object in their constructors.
Any of the constructors of AnAction with parameters instantiate the Presentation
object. However, instantiating the Presentation object in constructor results in allocating
resources, which may not be necessary. Instead of creating an instance of Presentation that
stores text, description, or icon, it is more efficient to utilize no-argument constructors of
AnAction and other base classes and follow the convention for setting the text, description,
and icon in plugin.xml. The IDE will load text, description, and icon only when the action
is actually displayed in the UI.
The convention for setting the text, description, and icon is as follows:
id attribute for the action in the plugin.xml file.
icon attribute if an icon is needed.
<actions>):
action.<action-id>.text=Translated Action Textaction.<action-id>.description=Translated Action DescriptionBad example:
// NewKotlinFileAction.kt
internal class NewKotlinFileAction : AnAction(
KotlinBundle.message("action.new.file.text"),
KotlinBundle.message("action.new.file.description"),
KotlinIcons.FILE
)
<action
class="org.jetbrains.kotlin.idea.actions.NewKotlinFileAction"
</action>
Good example:
// NewKotlinFileAction.kt
internal class NewKotlinFileAction : AnAction()
<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 Class/File
action.Kotlin.NewFile.description=Creates a new Kotlin class or file
New in 2023.2