IntelliJ Platform Plugin SDK
 
IntelliJ Platform Explorer

Extension Points

Edit pageLast modified: 10 January 2025

By defining extension points in your plugin, you can allow other plugins to extend your plugin's functionality. There are two types of extension points:

  • Interface extension points allow other plugins to extend your plugins with code. When defining an interface extension point, specify an interface, and other plugins will provide classes implementing that interface. The providing plugin can then invoke methods on this interface. In most cases, the interface can be annotated with @ApiStatus.OverrideOnly (see Override-Only API).

  • Bean extension points allow other plugins to extend a plugin with data. Specify the fully qualified name of an extension class, and other plugins will provide data that will be turned into instances of that class.

The plugin that contributes to the extension point will read the specified properties from the plugin.xml file.

If extension implementations are filtered according to dumb mode, the base class should be marked with PossiblyDumbAware to highlight this. Use DumbService.getDumbAwareExtensions() to retrieve dumb-aware implementations.

Base classes for extensions requiring a key: