title |
---|
Notable Changes in IntelliJ Platform and Plugins API 2020.* |
We've published our roadmap for the IntelliJ Platform for 2020: Part I Part II
Constructor Injection in Configurable
forbidden
: Please obtain necessary components only when needed (logged as ERROR now).
VirtualFile
lookup via Path
: Added VirtualFileManager.findFileByNioPath()
/refreshAndFindFileByNioPath()
. See also VirtualFile.toNioPath()
.
Tooltip descriptions for icons
: Register resource bundle via extension point com.intellij.iconDescriptionBundle
to provide tooltips automatically for all SimpleColoredComponent
renderers.
Specify incompatibility with Module : A plugin can mark itself incompatible if IDE contains specified module.
com.intellij.openapi.editor.markup.MarkupModel
methods using TextAttributesKey
: 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 in com.intellij.fileType
extension point. Issue
Add information to About dialog
: Implement com.intellij.ide.AboutPopupDescriptionProvider
and register in com.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 implementation FileModifier.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 point com.intellij.terminal.shellCommandHandler
). Blog post
Deprecating JavaFX in favor of JCEF : We recommend switching to JCEF, please see blog post for details.
Adopting builder-style API of the new AnnotationHolder.newAnnotation()
API.
: The previousAnnotationHolder.createXXXAnnotation()
methods are deprecated. Please use the new AnnotationHolder
API and AnnotationBuilder
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
using IdempotenceChecker
in tests
: Reports when the same reference resolves to non-equivalent results in different threads, see IdempotenceChecker
.
Refactoring dialog: builtin "Open in editor" option
: Set addOpenInEditorCheckbox
constructor parameter to enable it in custom RefactoringDialog
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 in plugin.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 return true
for the folder selected by the user only if it guarantees doOpenProject()
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 in doOpenProject()
- however, it is highly recommended performing all setup automatically (like Maven and Gradle plugins do).
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.