Notable Changes in IntelliJ Platform and Plugins API 2020.*
We've published our roadmap for the IntelliJ Platform for 2020: Part IPart II
2020.3
Notable Changes in 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.
- Reparsing of
IReparseableLeafElementType
- For elements whose
IElementType
implements 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
- Use
com.intellij.openapi.util.text.HtmlBuilder
for generating formatted content, e.g., for Documentation. - Extensible HTML Lexer/Parser
- Implement
com.intellij.html.embedding.HtmlEmbeddedContentSupport
and register incom.intellij.html.embeddedContentSupport
extension point to embed arbitrary tokens into any tag or attribute.
Please note that old API fromcom.intellij.lexer.BaseHtmlLexer
is no longer working. - Action System
- New features in Action System:
<override-text>
works now for<group>
as well,<synonym>
provides alternative names when searching for actions, and groups can be excluded from search results. - Welcome Screen customization
- To provide additional custom tabs, implement
com.intellij.openapi.wm.WelcomeTabFactory
and register incom.intellij.welcomeTabFactory
extension point. - File Type association with the IDE
- To control file type association with the IDE in the operating system, implement
com.intellij.openapi.fileTypes.OSFileIdeAssociation
. - Reader Mode customization
- Implement
com.intellij.codeInsight.actions.ReaderModeProvider
and register incom.intellij.readerModeProvider
extension point to apply custom settings for files rendered in reader mode. Providecom.intellij.codeInsight.actions.ReaderModeMatcher
to disable Reader Mode for particular set of files. - Text Editor customization
- Implement
com.intellij.openapi.fileEditor.impl.text.TextEditorCustomizer
and register incom.intellij.textEditorCustomizer
extension point to customize created editors.
Notable Changes in JavaScript Plugin 2020.3
- Published Javascript Testframework
- This allows using existing test base classes, see WebStorm Plugin Development page for details.
Notable Changes In CLion/AppCode 2020.3
- Required changes in project setup
- When targeting 2020.3, please see this migration guide.
2020.2
Notable Changes in IntelliJ Platform 2020.2
- Constructor Injection in
Configurable
forbidden - Please obtain necessary components only when needed (logged as ERROR now).
VirtualFile
lookup viaPath
- Added
VirtualFileManager.findFileByNioPath()
/refreshAndFindFileByNioPath()
. See alsoVirtualFile.toNioPath()
. - Tooltip descriptions for icons
- Register resource bundle via extension point
com.intellij.iconDescriptionBundle
to provide tooltips automatically for allSimpleColoredComponent
renderers. - Specify incompatibility with Module
- A plugin can mark itself incompatible if IDE contains specified module.
com.intellij.openapi.editor.markup.MarkupModel
methods usingTextAttributesKey
- To support on-the-fly Editor color scheme switching, change calls from methods taking
TextAttributes
. - Support for WebP images
- The platform now bundles support for images in WebP format.
- FileType mapping via hashbang (
#!
) - Specify
hashBangs
attribute incom.intellij.fileType
extension point. Issue - Add information to About dialog
- Implement
com.intellij.ide.AboutPopupDescriptionProvider
and register incom.intellij.aboutInfoProvider
extension point. - Unbundled plugins
- 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 Plugins Repository.
- Previewing Intention/Quick Fix
- To support preview in intention popup, suitable
FileModifier
must be provided (default implementationFileModifier.getFileModifierForPreview()
works for most cases). - Delegate Run Anything/Terminal commands to IDE features
- Switch to matching IDE feature by implementing
com.intellij.terminal.TerminalShellCommandHandler
(extension pointcom.intellij.terminal.shellCommandHandler
). Blog post - Deprecating JavaFX in favor of JCEF
- We recommend switching to JCEF, please see blog post for details.
- ASM Library 8.0.1
- Updated from 7.0.1.
- Validating Lexer for editor highlighting
- Lexer is wrapped using
ValidatingLexerWrapper
to verify it generates a continuous sequence of tokens and doesn't stall during iteration.
2020.1
Notable Changes in IntelliJ Platform 2020.1
- Dynamic Plugins
- Compatible plugins can be installed, updated and uninstalled without requiring IDE restart.
com.intellij.openapi.application.TransactionGuard
deprecated- 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- Please see
RecursionManager.CachingPreventedException
Javadoc and this issue for details. ResolveCache
usingIdempotenceChecker
in tests- Reports when the same reference resolves non-equivalent results in different threads, see
IdempotenceChecker
. - Refactoring dialog: builtin "Open in editor" option
- Set
addOpenInEditorCheckbox
constructor parameter to enable it in customRefactoringDialog
implementation. - Configurable status bar widgets
- Use extension point
com.intellij.statusBarWidgetFactory
to provide widgets that can be disabled or reordered. - JCEF Support (Experimental Feature)
- Allows embedding Chromium-based browser in the IDE.
- Override text presentation for actions depending on menu context
- Set the
<override-text>
element within the<action>
declaration inplugin.xml
. - 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
ProjectOpenProcessor
.ProjectOpenProcessor.canOpenProject()
should returntrue
for the folder selected by the user only if it guaranteesdoOpenProject()
can handle it. If there are several matching processors, a simple choice dialog is shown. If additional manual configuration is necessary, a modal dialog can be shown indoOpenProject()
- however, it is highly recommended performing all setup automatically (like Maven and Gradle plugins do).
Notable Changes in IntelliJ IDEA 2020.1
- EOL for JetBrains TFS Plugin
- Please use Azure DevOps plugin instead, see blog post for more details.
- Unbundled plugins
- 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 Plugins Repository.
Last modified: 14 January 2021