Notable Changes in IntelliJ Platform and Plugins API 2020.*
IntelliJ Platform 2020.3
IntelliJ Platform migrated to Java 11
Using Java 11 is now required, please see blog post.
Internal changes in Project Model
Internal changes related to a significant redesign of the representation of project models have been made, please see blog post for details. This shouldn't affect any plugins using the IntelliJ API properly and which don't access internal classes.
For elements whose
IElementTypeimplements this interface, platform attempts reparse when a modification is made right before or after the leaf element preventing reparsing the whole file.
Generating HTML fragments
Extensible HTML Lexer/Parser
HtmlEmbeddedContentSupportand register in
com.intellij.html.embeddedContentSupportextension point to embed arbitrary tokens into any tag or attribute. Please note that old API from
com.intellij.lexer.BaseHtmlLexeris no longer working.
Welcome Screen customization
To provide additional custom tabs, implement
WelcomeTabFactoryand register in
File Type association with the IDE
To control file type association with the IDE in the operating system, implement
Reader Mode customization
ReaderModeProviderand register in
com.intellij.readerModeProviderextension point to apply custom settings for files rendered in reader mode. Provide
com.intellij.codeInsight.actions.ReaderModeMatcherto disable Reader Mode for particular set of files.
Text Editor customization
TextEditorCustomizerand register in
com.intellij.textEditorCustomizerextension point to customize created editors.
This allows using existing test base classes, see WebStorm Plugin Development page for details.
Required changes in project setup
When targeting 2020.3, please see this migration guide.
IntelliJ Platform 2020.2
Constructor Injection in
Please obtain necessary components only when needed (logged as ERROR now).
refreshAndFindFileByNioPath(). See also
Tooltip descriptions for icons
Register resource bundle via
com.intellij.iconDescriptionBundleextension point to provide tooltips automatically for all
Specify incompatibility with Module
A plugin can mark itself incompatible if IDE contains specified module.
To support on-the-fly Editor color scheme switching, change calls from methods taking
Support for WebP images
The platform now bundles support for images in WebP format.
FileType mapping via hashbang (
com.intellij.fileTypeextension point. Issue
Add information to About dialog
AboutPopupDescriptionProviderand register in
Previewing Intention/Quick Fix
To support preview in intention popup, suitable
FileModifiermust be provided (default implementation
FileModifier.getFileModifierForPreview()works for most cases).
Delegate Run Anything/Terminal commands to IDE features
Deprecating JavaFX in favor of JCEF
ASM Library 8.0.1
Updated from 7.0.1.
Validating Lexer for editor highlighting
Lexer is wrapped using
ValidatingLexerWrapperto verify it generates a continuous sequence of tokens and doesn't stall during iteration.
IntelliJ IDEA 2020.2
Several plugins (ASP, CFML, Flash/Flex, GWT, JBoss Seam Pageflow, JBoss Seam, JBoss jBPM, OSGi, Play Framework, Resin, Seam Navigation, Tapestry, Virgo/dmServer) for no longer actively maintained technology have been unbundled. If your plugin depends on them, users will need to install them from the JetBrains Marketplace.
IntelliJ Platform 2020.1
Compatible plugins can be installed, updated and uninstalled without requiring IDE restart.
Usage is deprecated and can be replaced with
com.intellij.openapi.application.Application.invokeLater()in most cases, please consult Javadoc for more details.
RecursionManager.assertOnMissedCache()enabled by default in tests
Reports when the same reference resolves non-equivalent results in different threads, see
Refactoring dialog: builtin "Open in editor" option
addOpenInEditorCheckboxconstructor parameter to enable it in custom
Configurable status bar widgets
com.intellij.statusBarWidgetFactoryextension point to provide widgets that can be disabled or reordered, see Status Bar Widgets.
JCEF Support (Experimental Feature)
Allows embedding Chromium-based browser in the IDE.
Override text presentation for actions depending on menu context
Changes in Project Open/Import
Import from Existing Sources has been removed from the Welcome Screen, leaving only Open or Import, which calls a different extension than the one previously used to contribute a wizard step to Import from Existing Sources (which is still available in the File menu). To support Open or Import, a plugin must provide
truefor the folder selected by the user only if it guarantees
doOpenProject()can handle it. If there are several matching processors, a simple chooser dialog is shown. If additional manual configuration is necessary, a modal dialog can be shown in
doOpenProject()- however, it is highly recommended performing all setup automatically (like Maven and Gradle plugins do).
IntelliJ IDEA 2020.1
EOL for JetBrains TFS Plugin
Several plugins (Cloud Foundry, Google App Engine) for no longer actively maintained technology have been unbundled. If your plugin depends on them, users will need to install them from the JetBrains Marketplace.