IntelliJ Platform Plugin SDK Help

Incompatible Changes in IntelliJ Platform and Plugins API 2023.*

Please see Verifying Plugin Compatibility on how to use Plugin Verifier and IDE inspections to check such problems.

Early Access Program (EAP) releases of upcoming versions are available here.

2023.3

IntelliJ Platform 2023.3

Threading Model changes

Please see updated General Threading Rules.

Removal of commons-lang2 and commons-collections libraries

commons-lang2 library is going to be removed, a temporary compatibility layer (marked with @Deprecated(forRemoval = true) to highlight usages) is bundled. Please consider migrating to either commons-lang3 or commons-text libraries and bundle them with your plugin. Library commons-collections is going to be removed.

JsonPath library unbundled

Bundle it explicitly with your plugin.

com.intellij.codeInsight.intention.BaseElementAtCaretIntentionAction.isAvailable method Editor parameter marked @NotNull

This may break source-compatibility with inheritors written in Kotlin if they declare it as nullable.

com.intellij.codeInsight.intention.BaseElementAtCaretIntentionAction.invoke method Editor parameter marked @NotNull

This may break source-compatibility with inheritors written in Kotlin if they declare it as nullable.

com.intellij.openapi.actionSystem.ex.ActionUtil.showDumbModeWarning(Project, AnActionEvent[]) method removed

Use showDumbModeWarning(Project project, AnAction action, AnActionEvent @NotNull ... events) instead.

com.intellij.profiler.eventtrace package removed

Update code usages.

org.jetbrains.plugins.gradle.service.project.GradleProjectResolverUtil.buildDependencies(ProjectResolverContext, Map, Map, DataNode, Collection, DataNode) method parameter type changed from Map<String, String> to ArtifactMappingService

Update usages of this method. Change parameter artifactsMap value to an ArtifactMappingService instance. It can be obtained from ProjectResolverContext, or created in-place using the MapBasedArtifactMappingService.

org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.CONFIGURATION_ARTIFACTS field removed

Related mapping information is no longer accessible using this key. Artifacts mapping data is now stored in the instance of the ArtifactMappingService and can be obtained via org.jetbrains.plugins.gradle.service.project.ProjectResolverContext#getArtifactsMap().

com.intellij.ide.plugins.enums.PluginsGroupType.FEATURED enum renamed to com.intellij.ide.plugins.enums.PluginsGroupType.STAFF_PICKS

Use com.intellij.ide.plugins.enums.PluginsGroupType.STAFF_PICKS instead.

com.intellij.ide.plugins.newui.SearchWords.ORGANIZATION enum renamed to com.intellij.ide.plugins.newui.SearchWords.VENDOR

Use com.intellij.ide.plugins.newui.SearchWords.VENDOR instead.

com.intellij.execution.console.ConsoleHistoryCopyHandler.PROMPT_LENGTH_MARKER field removed

Use com.intellij.execution.console.ConsoleHistoryCopyHandlerKt#PROMPT_LENGTH_MARKER instead.

Collaboration Tools Module 2023.3

com.intellij.collaboration.ui.codereview.action.CodeReviewCheckoutRemoteBranchAction class removed

Action moved to a view model.

com.intellij.collaboration.ui.codereview.details.CodeReviewDetailsBranchComponentFactory.create(CoroutineScope, CodeReviewBranchesViewModel, AnAction, DataContext) method removed

Action moved to a view model.

com.intellij.collaboration.ui.codereview.diff.viewer.DiffEditorUtilKt class removed

Moved to com.intellij.collaboration.ui.codereview.editor.EditorComponentInlaysUtilKt.controlInlaysIn.

com.intellij.collaboration.ui.toolwindow.ReviewListTabComponentDescriptor class removed

Descriptor removed in favour of tab type com.intellij.collaboration.ui.toolwindow.ReviewTab.

com.intellij.collaboration.ui.toolwindow.ReviewTabsController class removed

Controller reworked to viewmodel com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel.

com.intellij.collaboration.ui.toolwindow.ReviewToolwindowDataKeys.getREVIEW_TABS_CONTROLLER() method removed

Controller reworked to viewmodel com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel.

com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectContext class removed

Context reworked to viewmodel com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel.

com.intellij.collaboration.ui.toolwindow.ReviewToolwindowViewModel.getProjectVm() method return type changed from SharedFlow<C> to SharedFlow<PVM>

Context reworked to viewmodel com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel.

com.intellij.collaboration.ui.toolwindow.ReviewTabsComponentFactory.createReviewListComponent(CoroutineScope, PVM) abstract method added

Context reworked to viewmodel com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel.

com.intellij.collaboration.ui.toolwindow.ReviewTabsComponentFactory.createTabComponent(CoroutineScope, PVM, TVM) abstract method added

Context reworked to viewmodel com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel.

com.intellij.collaboration.ui.toolwindow.ReviewToolwindowTabsManagerKt.manageReviewToolwindowTabs(CoroutineScope, ToolWindow, ReviewToolwindowViewModel, ReviewTabsController, ReviewTabsComponentFactory, String) method removed

Added a tab viewmodel type.

com.intellij.collaboration.ui.codereview.timeline.TimelineDiffComponentFactory.createDiffComponent(Project, EditorFactory, PatchHunk, Pair, Pair) method removed

Coroutine scope was added to track editor lifetime.

com.intellij.collaboration.ui.codereview.details.model.CodeReviewChangesViewModelBase class removed

Incorrect EDT-reliant implementation removed.

com.intellij.collaboration.async.CoroutineUtilKt.DisposingScope(Disposable, CoroutineContext) method removed

Use com.intellij.collaboration.async.CoroutineUtilKt.disposingScope(CoroutineContext) instead.

com.intellij.collaboration.ui.codereview.details.model.CodeReviewChangesViewModel.getReviewCommits() method return type changed from Flow to SharedFlow

Concrete type usage forced to ensure correct behavior

com.intellij.collaboration.ui.codereview.details.model.CodeReviewChangesViewModel.getSelectedCommit() method return type changed from Flow to SharedFlow

Concrete type usage forced to ensure correct behavior

com.intellij.collaboration.ui.codereview.details.model.CodeReviewChangesViewModel.getSelectedCommitIndex() method return type changed from Flow to SharedFlow

Concrete type usage forced to ensure correct behavior

com.intellij.collaboration.auth.ui.login.LoginTokenGenerator.generateToken(String) method return type changed from String to void

Removed unused return value

com.intellij.collaboration.auth.ui.login.TokenLoginDialog(Project, Component, LoginModel, String, DialogPanelSupplier) constructor parameter type changed from () -> DialogPanel to CoroutineScope.() -> DialogPanel

Allow using dialog scope in dialog panel

com.intellij.collaboration.ui.codereview.list.search.ChooserPopupUtil.showAsyncChooserPopup(RelativePoint, Flow<List<T>>, Mapper, ListCellRenderer, PopupConfig) method parameter type changed from Flow<List<T>> to Flow<Result<List<T>>>

Handle list loading errors inside the popup

com.intellij.collaboration.ui.codereview.list.search.ChooserPopupUtil.showAsyncChooserPopup(RelativePoint, Flow<List<T>>, Presenter, PopupConfig) method parameter type changed from Flow<List<T>> to Flow<Result<List<T>>>

Handle list loading errors inside the popup

Java Plugin 2023.3

com.siyeh.ipp.base.Intention class removed

As a part of migration to new experimental ModCommand API, the class was removed completely. It's a part of implementation module and was never intended to be inherited by external plugins. Consider implementing LocalInspectionTool directly.

com.intellij.codeInsight.TailTypes class renamed to com.intellij.codeInsight.JavaTailTypes

Update code usages.

JavaScript Plugin 2023.3

com.intellij.lang.javascript.buildTools.npm.PackageJsonUtil.createPackageJson(PsiDirectory, boolean) method removed

Use com.intellij.lang.javascript.buildTools.npm.PackageJsonFileTemplate.create(PsiDirectory, boolean, Consumer<PsiFile>) instead.

External System Run Configuration 2023.3

Property com.intellij.openapi.externalSystem.service.ui.command.line.CompletionTableInfo.completionInfo replaced by suspend function CompletionTableInfo.collectCompletionInfo

Implement the new function to support async completion collecting.

Property com.intellij.openapi.externalSystem.service.ui.command.line.CompletionTableInfo.tableCompletionInfo replaced by suspend function CompletionTableInfo.collectTableCompletionInfo

Implement the new function to support async completion collecting.

Function com.intellij.openapi.externalSystem.service.ui.completion.TextCompletionField.getCompletionVariants replaced by property TextCompletionField.completionCollector

Implement the new function to support async completion collecting.

com.intellij.openapi.externalSystem.service.execution.configuration.SettingsFragmentsContainer class renamed to com.intellij.openapi.externalSystem.service.execution.configuration.fragments.SettingsEditorFragmentContainer

Use new run configuration fragment builders.

com.intellij.openapi.externalSystem.service.execution.configuration.SettingsEditorLabeledComponent class moved to package com.intellij.openapi.externalSystem.service.execution.configuration.fragments

Use the new run configuration fragment builders.

Parameter type of fragment builder functions from ExternalSystemRunConfigurationUtil file changed from C to (Disposable) -> C

Use the new run configuration fragment builders.

Fragment builder functions from ExternalSystemRunConfigurationUtil file moved to SettingsEditorFragmentBuilders and ExternalSystemRunConfigurationFragmentBuilders files

Use the new run configuration fragment builders.

Kotlin Plugin 2023.3

org.jetbrains.kotlin.idea.actions.JavaToKotlinAction.Companion class renamed to org.jetbrains.kotlin.idea.actions.JavaToKotlinAction.Handler

In order to not load additional code eagerly on action instantiation.

org.jetbrains.kotlin.idea.compiler.configuration.KotlinIdePluginVersion.Companion class removed

Now, the Kotlin plugin version does not include a compiler version, so the class is unnecessary. Use com.intellij.openapi.application.ApplicationInfo to get the IntelliJ version.

org.jetbrains.kotlin.idea.compiler.configuration.KotlinIdePluginVersion class removed

Now, the Kotlin plugin version does not include a compiler version, so the class is unnecessary. Use com.intellij.openapi.application.ApplicationInfo to get the IntelliJ version.

Markdown Plugin 2023.3

org.intellij.plugins.markdown.editor.images package removed

Use org.intellij.plugins.markdown.images from intellij.markdown.images module.

org.intellij.plugins.markdown.lang.psi.MarkdownPsiElementFactory.createHtmlBlockWithImage(Project, MarkdownImageData) method removed

Use org.intellij.plugins.markdown.images.editor.ImagePsiElementFactory.createHtmlBlockWithImage instead.

org.intellij.plugins.markdown.lang.psi.MarkdownPsiElementFactory.createHtmlImageTag(Project, MarkdownImageData) method removed

Use org.intellij.plugins.markdown.images.editor.ImagePsiElementFactory.createHtmlImageTag instead.

org.intellij.plugins.markdown.lang.psi.MarkdownPsiElementFactory.createImage(Project, String, String, String) method removed

Use org.intellij.plugins.markdown.images.editor.ImagePsiElementFactory.createImage.

action.org.intellij.plugins.markdown.ui.actions.styling.InsertImageAction.insert.popup.text property removed from resource bundle messages.MarkdownBundle

Use org.intellij.plugins.markdown.images.MarkdownImagesBundle instead.

markdown.configure.image.dialog.browse.image.title property removed from resource bundle messages.MarkdownBundle

Use org.intellij.plugins.markdown.images.MarkdownImagesBundle instead.

markdown.configure.image.dialog.convert.to.html.label property removed from resource bundle messages.MarkdownBundle

Use org.intellij.plugins.markdown.images.MarkdownImagesBundle instead.

markdown.configure.image.dialog.description.label property removed from resource bundle messages.MarkdownBundle

Use org.intellij.plugins.markdown.images.MarkdownImagesBundle instead.

markdown.configure.image.dialog.height.label property removed from resource bundle messages.MarkdownBundle

Use org.intellij.plugins.markdown.images.MarkdownImagesBundle instead.

markdown.configure.image.dialog.path.label property removed from resource bundle messages.MarkdownBundle

Use org.intellij.plugins.markdown.images.MarkdownImagesBundle instead.

markdown.configure.image.dialog.screen.reader.text.panel.title property removed from resource bundle messages.MarkdownBundle

Use org.intellij.plugins.markdown.images.MarkdownImagesBundle instead.

markdown.configure.image.dialog.title.label property removed from resource bundle messages.MarkdownBundle

Use org.intellij.plugins.markdown.images.MarkdownImagesBundle instead.

markdown.configure.image.dialog.width.label property removed from resource bundle messages.MarkdownBundle

Use org.intellij.plugins.markdown.images.MarkdownImagesBundle instead.

markdown.insert.image.dialog.title property removed from resource bundle messages.MarkdownBundle

Use org.intellij.plugins.markdown.images.MarkdownImagesBundle instead.

Python Plugin 2023.3

org.jetbrains.plugins.notebooks.jupyter.variables package removed

It is now part of separate Jupyter plugin.

com.jetbrains.python.psi.PyClass.getPropertiesInherited(TypeEvalContext) abstract method added

Should implement this method.

Database Plugin 2023.3

com.intellij.database.datagrid.DataGrid.getName(ModelIndex<GridColumn>) method removed

Only recompilation is needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.

com.intellij.database.datagrid.DataGrid.setDisplayType(ModelIndex<GridColumn>, DisplayType) abstract method added

Only recompilation is needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.

com.intellij.database.datagrid.DataGrid.getDisplayType(ModelIndex<GridColumn>) abstract method added

Only recompilation is needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.

com.intellij.database.datagrid.DataGrid.getPureDisplayType(ModelIndex<GridColumn>) abstract method added

Only recompilation is needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.

com.intellij.database.datagrid.DataGrid.setBinaryDisplayType(ModelIndex<GridColumn>, BinaryDisplayType) method removed

Use com.intellij.database.datagrid.DataGrid.setDisplayType(ModelIndex<GridColumn>, DisplayType) instead.

com.intellij.database.datagrid.DataGrid.getBinaryDisplayType(ModelIndex<GridColumn>) method removed

Use com.intellij.database.datagrid.DataGrid.getDisplayType(ModelIndex<GridColumn>) instead.

com.intellij.database.datagrid.DataGrid.getPureBinaryDisplayType(ModelIndex<GridColumn>) method removed

Use com.intellij.database.datagrid.DataGrid.getPureDisplayType(ModelIndex<GridColumn>) instead.

2023.2

IntelliJ Platform 2023.2

com.intellij.openapi.actionSystem.AnActionEvent.getInputEvent() method return type changed from InputEvent to @Nullable InputEvent

This may break source-compatibility with inheritors written in Kotlin.

Specify displayName/key for Configurable

To improve performance, provide either attribute for com.intellij.applicationConfigurable or com.intellij.projectConfigurable extension point (see Settings Guide).

com.intellij.remote.RemoteProcess.setWindowSize(int, int) abstract method added

Should implement this method.

Database Plugin 2023.2

com.intellij.database.dataSource.DataSourceStorageCore class removed

Use com.intellij.database.dataSource.DataSourceStorage instead.

com.intellij.database.dataSource.DataSourceStorageUtil class removed

Use com.intellij.database.dataSource.DataSourceStorage instead.

com.intellij.database.dataSource.DataSourceStorageCore$Listener class renamed to com.intellij.database.dataSource.DataSourceStorage$Listener

Core class removed from hierarchy.

com.intellij.database.datagrid.CoreGrid.showCell(ModelIndex<Row>, ModelIndex<Column>) method parameter type changed from ModelIndex<Row> to int

ModelIndex class is used to reference data in the table model. Row indexes in the table model start with 0, even when the table is scrolled to page N>1. Parameter type was changed to int to indicate that it is an absolute index in the DB table.

com.intellij.database.datagrid.DataGrid.getName(ModelIndex<GridColumn>) abstract method added

Only recompilation is needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.

Maven Plugin 2023.2

org.jetbrains.idea.maven.server.MavenEmbedderWrapper.customizeForResolve(MavenConsole, MavenProgressIndicator) method removed

Use resolveProject(Collection, MavenExplicitProfiles, ProgressIndicator, MavenSyncConsole, MavenConsole, MavenWorkspaceMap, boolean) instead.

org.jetbrains.idea.maven.server.MavenEmbedderWrapper.execute(VirtualFile, Collection, Collection, List) method removed

Use executeGoal(Collection, String, MavenProgressIndicator, MavenConsole) instead.

Apache Velocity Plugin 2023.2

com.intellij.velocity.psi.VtlVariable.getPsiType() method return type changed from com.intellij.psi.PsiType to com.intellij.velocity.psi.VtlVariableType

Use com.intellij.velocity.java.reference.VtlPsiType to wrap Java types to return result from implementations.

JSON Path Plugin 2023.2

Moved package com.intellij.jsonpath

It is now part of separate JSONPath plugin. Add dependency on com.intellij.jsonpath to use its API.

2023.1

IntelliJ Platform 2023.1

Apache Batik library unbundled

Please bundle and use echosvg library instead.

com.intellij.grazie.text.RuleGroup.Companion.getLITERALS() method removed

Replaced by constant field LITERALS.

com.intellij.ui.treeStructure.SimpleNode.doUpdate() method removed

It was replaced by doUpdate(PresentationData) which should now only modify the state of its parameter.

com.intellij.ide.ui.laf.darcula.ui.DarculaProgressBarUI.getFinishedColor() method removed

Use getFinishedColor(JComponent c) overload instead.

com.intellij.openapi.externalSystem.view.ExternalSystemNode.setNameAndTooltip(String, String) method removed

Use setNameAndTooltip(PresentationData, String, String) overload instead.

com.intellij.openapi.externalSystem.view.ExternalSystemNode.setNameAndTooltip(String, String, String) method removed

Use setNameAndTooltip(PresentationData, String, String, String) overload instead.

com.intellij.openapi.externalSystem.view.ExternalSystemNode.setNameAndTooltip(String, String, SimpleTextAttributes) method removed

Use setNameAndTooltip(PresentationData, String, String, SimpleTextAttributes) overload instead.

com.intellij.ssh.config.unified.SshConfigManager.register(boolean, String, String, String, String, AuthType, String, String, boolean, boolean, String, String) method parameter String removed

Local port is the part of the tunnel configuration, not SSH settings.

com.intellij.openapi.fileEditor.impl.HTMLEditorProvider.Companion.getAFFINITY_KEY() method removed

It was an accidentally exposed internal API. Please use HTMLEditorProvider.openEditor() methods, or implement your own file editor provider.

com.intellij.execution.RunnerAndConfigurationSettings.setFocusToolWindowBeforeRun(boolean) abstract method added

The interface is not intended to be implemented in external plugins.

com.intellij.execution.RunnerAndConfigurationSettings.getFocusToolWindowBeforeRun() abstract method added

The interface is not intended to be implemented in external plugins.

Database Plugin 2023.1

com.intellij.database.dataSource.url.TypeDescriptor.ParamEditor class moved to package com.intellij.database.dataSource.url

The inner interface was moved to upper level.

com.intellij.database.dataSource.url.TypesRegistry.BaseTypeDescriptor class moved to package com.intellij.database.dataSource.url.ui

UI extracted from TypesRegistry to TypesRegistryUi. Use com.intellij.database.urlParamEditorProvider extension point to register parameter descriptor, use com.intellij.database.urlParamEditorUiProvider extension point to register parameter editor descriptor.

com.intellij.database.datagrid.DataGrid.setAnonymousColumnName(String) method removed

Only recompilation needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.

com.intellij.database.datagrid.DataGrid.setResultViewAdditionalRowsCount(int) method removed

Only recompilation needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.

com.intellij.database.datagrid.DataGrid.setResultViewAllowMultilineColumnLabels(boolean) method removed

Only recompilation needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.

com.intellij.database.datagrid.DataGrid.setResultViewPaintHorizontalLines(boolean) method removed

Only recompilation needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.

com.intellij.database.datagrid.DataGrid.setResultViewShowRowNumbers(boolean) method removed

Only recompilation needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.

com.intellij.database.datagrid.DataGrid.setResultViewTransparentHeaderBackground(boolean) method removed

Only recompilation needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.

com.intellij.database.datagrid.DataGrid.setResultViewVisibleRowCount(int) method removed

Only recompilation needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.

com.intellij.database.datagrid.DataGrid.countSortedColumns() abstract method added

Only recompilation needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.

com.intellij.database.datagrid.DataGrid.getAppearance() abstract method added

Only recompilation needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.

com.intellij.database.datagrid.DataGrid.getHoveredRowBackground() abstract method added

Only recompilation needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.

com.intellij.database.datagrid.DataGrid.getStripeRowBackground() abstract method added

Only recompilation needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.

com.intellij.database.plan.ExplainPlanProvider.createRawExplainTask(LocalDataSource dataSource, boolean analyze) abstract method added

Should implement this method.

JavaScript Plugin 2023.1

com.intellij.lang.javascript.JavascriptParserDefinition.createFile(FileViewProvider) method return type changed from com.intellij.lang.javascript.psi.JSFile to com.intellij.psi.PsiFile

Required to support Astro file format.

JavaScript Debugger Plugin 2023.1

org.jetbrains.wip.WipVm.initDomains() method return type changed from void to org.jetbrains.concurrency.Promise<*>

initDomains() is now awaitable to make WIP/CDP domains-dependent initialization logic possible.

org.jetbrains.wip.WipVm.ready() method return type changed from void to org.jetbrains.concurrency.Promise<*>

ready() is now awaitable to make WIP/CDP connection-dependent initialization logic possible.

JetBrains Gateway Plugin 2023.1

com.jetbrains.gateway.ssh.HighLevelHostAccessor.isPathPresentOnRemote(String, FileSystemItem) method parameter type changed from String to com.jetbrains.gateway.ssh.deploy.RemotePath

Using strings instead of paths breaks a lot of things when doing cross-platform development, and is generally not a good idea. Use com.jetbrains.gateway.ssh.HighLevelHostAccessor.makeRemotePath to prepare a path to pass into any of the methods requiring it.

PHP Plugin 2023.1

com.jetbrains.php.config.library.PhpIncludePathManager.getRoots() method removed

This class no longer handles all paths configured in non-runtime com.jetbrains.php.config.library.PhpLibraryRootProvider. Paths configured in Include Path Settings are available with PhpIncludePathManager.getIncludePaths(). All additional paths to use as roots for resolving via PhpIncludePathManager.getAllIncludedRoots().

Last modified: 11 April 2024