Skip to content

Latest commit

 

History

History
93 lines (64 loc) · 6.4 KB

api_notable_list_2020.md

File metadata and controls

93 lines (64 loc) · 6.4 KB
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

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 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

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 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).

Notable Changes in IntelliJ IDEA

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.