Configuring Extensions to the IntelliJ IDEA Core
This topic explains how you can create a plugin that contributes to extension points declared in the IntelliJ IDEA core.
From this page, you can also download a sample plugin illustrating how to contribute to the applicationConfigurable extenstion point.
How to Get the Extension Points List?
To get a list of extension points available in the IntelliJ IDEA core, consult the <extensionPoints> section of the following XML configuration files:
How to Create an Extension in Your Plugin?
To create an extension that contributes to the specified extension point, perform the following steps:
- In your plugin project, create a Java class that implements a bean class or an interface that is allowed to access the extension point.
- In the plugin configuration file plugin.xml, create the <extensions defaultExtensionNs="com.intellij"> </extensions> section.
- To this section, add the child element similar to the following syntax: <extensionPointName implementation=implementation class name></extensionPointName>.
Where the extensionPointName refers to the extension point name to access, and the implementation class name refers to the newly created Java class.
Sample Plugin: Extension to the applicationConfigurable Extension Point
Your plugins can access the applicationConfigurable extension point to configure IDEA settings pertaining to your workspace. The IntelliJ IDEA UI provides the Settings dialog you can display by clicking on the IDEA toolbar. The settings pertaining to your workspace are displayed under IDE Settings (for more information, refer to IDE Settings in the IntelliJ IDEA Web Help. A plugin that contributes to the applicationConfigurable extension point can add new menu command(s) under *IDE Settings.
applicationConfigurable Sample Plugin
The applicationConfigurable sample plugin adds the new menu command "Menu Font" to the IDE Settings area. Clicking this commands causes IntelliJ IDEA to display a UI designed to specify a font used for the IntelliJ IDEA menus.
<insert screenshot here>
To download and install this sample plugin
[ TBD ]