Skip to content

Latest commit

 

History

History
452 lines (297 loc) · 29.1 KB

api_changes_list_2023.md

File metadata and controls

452 lines (297 loc) · 29.1 KB

Incompatible Changes in IntelliJ Platform and Plugins API 2023.*

List of known Breaking API Changes in 2023.*

2023.3

IntelliJ Platform 2023.3

Threading Model changes : Please see updated .

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

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