diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddModuleDependencyFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddModuleDependencyFix.java index 702a48563227..ffacda2479ee 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddModuleDependencyFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddModuleDependencyFix.java @@ -8,6 +8,7 @@ import com.intellij.codeInsight.daemon.impl.analysis.JavaModuleGraphUtil; import com.intellij.codeInsight.intention.preview.IntentionPreviewInfo; import com.intellij.ide.nls.NlsMessages; import com.intellij.java.JavaBundle; +import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.application.ReadAction; import com.intellij.openapi.command.CommandProcessor; @@ -28,6 +29,7 @@ import com.intellij.openapi.util.text.HtmlChunk; import com.intellij.psi.*; import com.intellij.psi.impl.source.resolve.JavaResolveUtil; import com.intellij.psi.util.PointersKt; +import com.intellij.util.SlowOperations; import com.intellij.util.concurrency.AppExecutorUtil; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.modules.CircularModuleDependenciesDetector; @@ -161,28 +163,34 @@ class AddModuleDependencyFix extends OrderEntryFix { ReadAction.nonBlocking(() -> CircularModuleDependenciesDetector.addingDependencyFormsCircularity(myCurrentModule, module)) .expireWhen(() -> project.isDisposed() || module.isDisposed()) .finishOnUiThread(ModalityState.nonModal(), circularModules -> { - if (circularModules != null && !showCircularWarning(project, circularModules, module)) return; - - CommandProcessor.getInstance().runUndoTransparentAction(() -> { - JavaProjectModelModificationService.getInstance(project).addDependency(myCurrentModule, module, myScope, myExported); - if (editor == null || myClasses.isEmpty()) return; - - PsiClass[] targetClasses = myClasses.stream() - .map(SmartPsiElementPointer::getElement) - .filter(Objects::nonNull) - .filter(c -> ModuleUtilCore.findModuleForPsiElement(c) == module) - .toArray(PsiClass[]::new); - if (targetClasses.length == 0) return; - - PsiReference ref = restoreReference(); - if (ref == null) return; - - DumbService.getInstance(project).completeJustSubmittedTasks(); - new AddImportAction(project, ref, editor, targetClasses).execute(); - }); + try (AccessToken ignore = SlowOperations.knownIssue("IDEA-359248")) { + addDependencyOnModuleEDT(project, editor, module, circularModules); + } }).submit(AppExecutorUtil.getAppExecutorService()); } + private void addDependencyOnModuleEDT(@NotNull Project project, Editor editor, @NotNull Module module, Couple circularModules) { + if (circularModules != null && !showCircularWarning(project, circularModules, module)) return; + + CommandProcessor.getInstance().runUndoTransparentAction(() -> { + JavaProjectModelModificationService.getInstance(project).addDependency(myCurrentModule, module, myScope, myExported); + if (editor == null || myClasses.isEmpty()) return; + + PsiClass[] targetClasses = myClasses.stream() + .map(SmartPsiElementPointer::getElement) + .filter(Objects::nonNull) + .filter(c -> ModuleUtilCore.findModuleForPsiElement(c) == module) + .toArray(PsiClass[]::new); + if (targetClasses.length == 0) return; + + PsiReference ref = restoreReference(); + if (ref == null) return; + + DumbService.getInstance(project).completeJustSubmittedTasks(); + new AddImportAction(project, ref, editor, targetClasses).execute(); + }); + } + private boolean showCircularWarning(@NotNull Project project, @NotNull Couple circle, @NotNull Module classModule) { String message = QuickFixBundle.message("orderEntry.fix.circular.dependency.warning", getModuleName(classModule), getModuleName(circle.getFirst()), diff --git a/platform/analysis-impl/src/com/intellij/codeInsight/lookup/DefaultLookupItemRenderer.java b/platform/analysis-impl/src/com/intellij/codeInsight/lookup/DefaultLookupItemRenderer.java index 2d5c5a9a8274..a7798f6c3d11 100644 --- a/platform/analysis-impl/src/com/intellij/codeInsight/lookup/DefaultLookupItemRenderer.java +++ b/platform/analysis-impl/src/com/intellij/codeInsight/lookup/DefaultLookupItemRenderer.java @@ -1,6 +1,7 @@ // Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.codeInsight.lookup; +import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.util.Iconable; import com.intellij.openapi.util.ScalableIcon; import com.intellij.openapi.util.registry.Registry; @@ -10,6 +11,7 @@ import com.intellij.psi.util.PsiUtilCore; import com.intellij.ui.IconManager; import com.intellij.ui.PlatformIcons; import com.intellij.ui.SizedIcon; +import com.intellij.util.SlowOperations; import org.jetbrains.annotations.Nullable; import javax.swing.*; @@ -28,7 +30,10 @@ public final class DefaultLookupItemRenderer extends LookupElementRenderer preselectedRow = new Ref<>(); - Predicate originUsageCheck = originUsageCheck(parameters.editor); + Predicate originUsageCheck; + try (AccessToken ignore = SlowOperations.knownIssue("IJPL-162330")) { + originUsageCheck = originUsageCheck(parameters.editor); + } ShowUsagesTableCellRenderer renderer = new ShowUsagesTableCellRenderer(originUsageCheck, outOfScopeUsages, searchScope); ShowUsagesTable table = new ShowUsagesTable(renderer, usageView); diff --git a/platform/lang-impl/src/com/intellij/find/findUsages/FindUsagesManager.java b/platform/lang-impl/src/com/intellij/find/findUsages/FindUsagesManager.java index 6a78a7ca0429..02ff932d66fa 100644 --- a/platform/lang-impl/src/com/intellij/find/findUsages/FindUsagesManager.java +++ b/platform/lang-impl/src/com/intellij/find/findUsages/FindUsagesManager.java @@ -163,10 +163,13 @@ public final class FindUsagesManager { public @Nullable FindUsagesHandler getFindUsagesHandler(@NotNull PsiElement element, @NotNull OperationMode operationMode) { for (FindUsagesHandlerFactory factory : FindUsagesHandlerFactory.EP_NAME.getExtensions(myProject)) { - try (AccessToken ignore = SlowOperations.knownIssue("IDEA-353115, EA-841437")) { + try (AccessToken ignore = SlowOperations.knownIssue("IJPL-162401 IDEA-353115")) { if (!factory.canFindUsages(element)) continue; } - FindUsagesHandler handler = factory.createFindUsagesHandler(element, operationMode); + FindUsagesHandler handler; + try (AccessToken ignore = SlowOperations.knownIssue("IJPL-162401")) { + handler = factory.createFindUsagesHandler(element, operationMode); + } if (handler == FindUsagesHandler.NULL_HANDLER) return null; if (handler != null) { return handler; @@ -220,7 +223,9 @@ public final class FindUsagesManager { clearFindingNextUsageInFile(); - startFindUsages(findUsagesOptions, handler, scopeFile, editor); + try (AccessToken ignore = SlowOperations.knownIssue("IJPL-162399")) { + startFindUsages(findUsagesOptions, handler, scopeFile, editor); + } } public void startFindUsages(@NotNull PsiElement psiElement, @NotNull FindUsagesOptions findUsagesOptions) { diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/InplaceRefactoring.java b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/InplaceRefactoring.java index ad0e3cd8ef41..1fa8907dbbd6 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/InplaceRefactoring.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/InplaceRefactoring.java @@ -18,6 +18,7 @@ import com.intellij.lang.LanguageNamesValidation; import com.intellij.lang.injection.InjectedLanguageManager; import com.intellij.openapi.actionSystem.IdeActions; import com.intellij.openapi.actionSystem.Shortcut; +import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ReadAction; import com.intellij.openapi.command.CommandProcessor; @@ -69,6 +70,7 @@ import com.intellij.ui.awt.RelativePoint; import com.intellij.ui.popup.PopupFactoryImpl; import com.intellij.util.CommonProcessors; import com.intellij.util.Query; +import com.intellij.util.SlowOperations; import com.intellij.util.containers.NotNullList; import com.intellij.util.ui.PositionTracker; import org.jetbrains.annotations.NonNls; @@ -217,7 +219,7 @@ public abstract class InplaceRefactoring { List> stringUsages = new NotNullList<>(); collectAdditionalElementsToRename(stringUsages); - try { + try (AccessToken ignore = SlowOperations.startSection(SlowOperations.ACTION_PERFORM)) { // IJPL-162116 return buildTemplateAndStart(references, stringUsages, scope, containingFile); } catch (Throwable e) { diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java index f510748ed1c3..b9ba9bbff0ce 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java @@ -16,6 +16,7 @@ import com.intellij.modcommand.ActionContext; import com.intellij.modcommand.ModCommandExecutor; import com.intellij.modcommand.ModUpdateFileText; import com.intellij.openapi.actionSystem.ex.ActionUtil; +import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.application.ReadAction; @@ -55,6 +56,7 @@ import com.intellij.refactoring.util.CommonRefactoringUtil; import com.intellij.refactoring.util.TextOccurrencesUtil; import com.intellij.usageView.UsageInfo; import com.intellij.util.Processor; +import com.intellij.util.SlowOperations; import com.intellij.util.ThrowableRunnable; import com.intellij.util.concurrency.AppExecutorUtil; import com.intellij.util.containers.ContainerUtil; @@ -526,7 +528,9 @@ public class VariableInplaceRenamer extends InplaceRefactoring { if (mySnapshot != null) { WriteCommandAction.writeCommandAction(myProject).withName(getCommandName()).run(() -> mySnapshot.apply(myInsertedName)); } - performRefactoringRename(myInsertedName, myMarkAction); + try (AccessToken ignore = SlowOperations.startSection(SlowOperations.ACTION_PERFORM)) { // IJPL-162114 + performRefactoringRename(myInsertedName, myMarkAction); + } } else { problem.showUI(); diff --git a/platform/lvcs-impl/src/com/intellij/platform/lvcs/impl/LocalHistoryActivityData.kt b/platform/lvcs-impl/src/com/intellij/platform/lvcs/impl/LocalHistoryActivityData.kt index 8324abc97676..f5dd34c541e6 100644 --- a/platform/lvcs-impl/src/com/intellij/platform/lvcs/impl/LocalHistoryActivityData.kt +++ b/platform/lvcs-impl/src/com/intellij/platform/lvcs/impl/LocalHistoryActivityData.kt @@ -9,6 +9,7 @@ import com.intellij.openapi.application.runReadAction import com.intellij.openapi.util.Key import com.intellij.openapi.util.getOrCreateUserData import com.intellij.platform.lvcs.impl.diff.getEntryPath +import com.intellij.util.SlowOperations internal val AFFECTED_PATHS: Key> = Key.create("Lvcs.Affected.Paths") @@ -18,7 +19,9 @@ internal fun ActivityData.getRootEntry(gateway: IdeaGateway): RootEntry { runReadAction { val affectedPaths = getUserData(AFFECTED_PATHS) if (!affectedPaths.isNullOrEmpty()) { - return@runReadAction gateway.createTransientRootEntryForPaths(affectedPaths, true) + return@runReadAction SlowOperations.knownIssue("IJPL-162340").use { + gateway.createTransientRootEntryForPaths(affectedPaths, true) + } } gateway.createTransientRootEntry() } diff --git a/platform/platform-impl/src/com/intellij/ide/ui/newItemPopup/NewItemWithTemplatesPopupPanel.java b/platform/platform-impl/src/com/intellij/ide/ui/newItemPopup/NewItemWithTemplatesPopupPanel.java index 02df523fb4a6..76ba09c9be58 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/newItemPopup/NewItemWithTemplatesPopupPanel.java +++ b/platform/platform-impl/src/com/intellij/ide/ui/newItemPopup/NewItemWithTemplatesPopupPanel.java @@ -2,6 +2,7 @@ package com.intellij.ide.ui.newItemPopup; import com.intellij.ide.IdeBundle; +import com.intellij.openapi.application.AccessToken; import com.intellij.ui.ExperimentalUI; import com.intellij.ui.ScrollingUtil; import com.intellij.ui.SeparatorComponent; @@ -10,6 +11,7 @@ import com.intellij.ui.components.JBBox; import com.intellij.ui.components.JBList; import com.intellij.ui.components.JBScrollPane; import com.intellij.ui.render.RenderingUtil; +import com.intellij.util.SlowOperations; import com.intellij.util.ui.JBUI; import com.intellij.util.ui.accessibility.ScreenReader; import org.jetbrains.annotations.NotNull; @@ -122,7 +124,10 @@ public class NewItemWithTemplatesPopupPanel extends NewItemSimplePopupPanel { MouseAdapter mouseListener = new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { - if (myApplyAction != null && e.getClickCount() > 1) myApplyAction.consume(e); + if (myApplyAction == null || e.getClickCount() <= 1) return; + try (AccessToken ignored = SlowOperations.startSection(SlowOperations.ACTION_PERFORM)) { // IJPL-162396 + myApplyAction.consume(e); + } } }; diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java index a712b38a0abd..4f48d3bdc4d6 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java @@ -1426,7 +1426,10 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi myHighlighterDisposable = () -> document.removeDocumentListener(highlighter); Disposer.register(myDisposable, myHighlighterDisposable); highlighter.setEditor(this); - highlighter.setText(document.getImmutableCharSequence()); + + try (AccessToken ignored = SlowOperations.knownIssue("IJPL-162348")) { + highlighter.setText(document.getImmutableCharSequence()); + } if (!(highlighter instanceof EmptyEditorHighlighter)) { EditorHighlighterCache.rememberEditorHighlighterForCachesOptimization(document, highlighter); } diff --git a/platform/usageView-impl/src/com/intellij/usages/impl/UsageViewImpl.java b/platform/usageView-impl/src/com/intellij/usages/impl/UsageViewImpl.java index 44aa9adcf5f0..41328d8794eb 100644 --- a/platform/usageView-impl/src/com/intellij/usages/impl/UsageViewImpl.java +++ b/platform/usageView-impl/src/com/intellij/usages/impl/UsageViewImpl.java @@ -11,10 +11,7 @@ import com.intellij.lang.Language; import com.intellij.navigation.NavigationItem; import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.*; -import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.application.ModalityState; -import com.intellij.openapi.application.ReadAction; -import com.intellij.openapi.application.WriteIntentReadAction; +import com.intellij.openapi.application.*; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.progress.ProgressIndicator; @@ -1910,7 +1907,9 @@ public class UsageViewImpl implements UsageViewEx { protected Navigatable createDescriptorForNode(@NotNull DefaultMutableTreeNode node) { if (node.getChildCount() > 0) return null; if (node instanceof Node && ((Node)node).isExcluded()) return null; - return getNavigatableForNode(node, !myPresentation.isReplaceMode()); + try (AccessToken ignore = SlowOperations.knownIssue("IJPL-162332")) { + return getNavigatableForNode(node, !myPresentation.isReplaceMode()); + } } @Override diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointManager.kt b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointManager.kt index 32dba5582a84..951a15e86eba 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointManager.kt +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointManager.kt @@ -37,6 +37,7 @@ import com.intellij.openapi.vfs.impl.BulkVirtualFileListenerAdapter import com.intellij.psi.PsiDocumentManager import com.intellij.ui.ExperimentalUI.Companion.isNewUI import com.intellij.util.DocumentUtil +import com.intellij.util.SlowOperations import com.intellij.util.concurrency.annotations.RequiresEdt import com.intellij.util.containers.MultiMap import com.intellij.util.ui.EDT @@ -87,8 +88,9 @@ class XLineBreakpointManager(private val project: Project, coroutineScope: Corou if (breakpoints.isEmpty() || ApplicationManager.getApplication().isUnitTestMode) { return } - - breakpoints.forEach { it.updatePosition() } + SlowOperations.knownIssue("IJPL-162343").use { + breakpoints.forEach { it.updatePosition() } + } // Check if two or more breakpoints occurred at the same position and remove duplicates. val (valid, invalid) = breakpoints.partition { it.isValid } diff --git a/plugins/git4idea/src/git4idea/index/GitStageTracker.kt b/plugins/git4idea/src/git4idea/index/GitStageTracker.kt index 4b4bd55b38b4..740c60fed20d 100644 --- a/plugins/git4idea/src/git4idea/index/GitStageTracker.kt +++ b/plugins/git4idea/src/git4idea/index/GitStageTracker.kt @@ -23,6 +23,7 @@ import com.intellij.openapi.vfs.VirtualFileManager import com.intellij.openapi.vfs.newvfs.BulkFileListener import com.intellij.openapi.vfs.newvfs.events.VFileEvent import com.intellij.util.EventDispatcher +import com.intellij.util.SlowOperations import com.intellij.util.messages.MessageBusConnection import com.intellij.vcs.log.runInEdt import git4idea.GitVcs @@ -95,7 +96,9 @@ open class GitStageTracker(val project: Project) : Disposable { */ internal fun markDirty(file: VirtualFile) { if (!isStagingAreaAvailable()) return - val root = getRoot(project, file) ?: return + val root = SlowOperations.knownIssue("IJPL-162402").use { + getRoot(project, file) ?: return + } if (!gitRoots().contains(root)) return LOG.debug("Mark dirty ${file.filePath()}") dirtyScopeManager.fileDirty(file.filePath()) diff --git a/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/introduce/KotlinIntroduceVariableHandler.kt b/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/introduce/KotlinIntroduceVariableHandler.kt index 2d27efc48f58..b5e0cbacefcc 100644 --- a/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/introduce/KotlinIntroduceVariableHandler.kt +++ b/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/introduce/KotlinIntroduceVariableHandler.kt @@ -13,6 +13,7 @@ import com.intellij.psi.util.PsiTreeUtil import com.intellij.refactoring.HelpID import com.intellij.refactoring.RefactoringActionHandler import com.intellij.refactoring.util.CommonRefactoringUtil +import com.intellij.util.SlowOperations import com.intellij.util.SmartList import org.jetbrains.kotlin.idea.base.resources.KotlinBundle import org.jetbrains.kotlin.idea.refactoring.chooseContainer.chooseContainerElementIfNecessary @@ -20,32 +21,7 @@ import org.jetbrains.kotlin.idea.refactoring.introduce.KotlinIntroduceVariableHe import org.jetbrains.kotlin.idea.refactoring.selectElement import org.jetbrains.kotlin.idea.util.ElementKind import org.jetbrains.kotlin.idea.util.application.isUnitTestMode -import org.jetbrains.kotlin.psi.KtAnnotationEntry -import org.jetbrains.kotlin.psi.KtArrayAccessExpression -import org.jetbrains.kotlin.psi.KtBinaryExpression -import org.jetbrains.kotlin.psi.KtBlockExpression -import org.jetbrains.kotlin.psi.KtClassBody -import org.jetbrains.kotlin.psi.KtConstructorCalleeExpression -import org.jetbrains.kotlin.psi.KtConstructorDelegationReferenceExpression -import org.jetbrains.kotlin.psi.KtContainerNode -import org.jetbrains.kotlin.psi.KtDeclaration -import org.jetbrains.kotlin.psi.KtDeclarationWithBody -import org.jetbrains.kotlin.psi.KtElement -import org.jetbrains.kotlin.psi.KtExpression -import org.jetbrains.kotlin.psi.KtFile -import org.jetbrains.kotlin.psi.KtFunction -import org.jetbrains.kotlin.psi.KtFunctionLiteral -import org.jetbrains.kotlin.psi.KtIfExpression -import org.jetbrains.kotlin.psi.KtLambdaExpression -import org.jetbrains.kotlin.psi.KtLoopExpression -import org.jetbrains.kotlin.psi.KtOperationExpression -import org.jetbrains.kotlin.psi.KtPsiUtil -import org.jetbrains.kotlin.psi.KtQualifiedExpression -import org.jetbrains.kotlin.psi.KtReferenceExpression -import org.jetbrains.kotlin.psi.KtStatementExpression -import org.jetbrains.kotlin.psi.KtSuperExpression -import org.jetbrains.kotlin.psi.KtTypeReference -import org.jetbrains.kotlin.psi.KtWhenEntry +import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.collectDescendantsOfType import org.jetbrains.kotlin.psi.psiUtil.isFunctionalExpression import org.jetbrains.kotlin.psi.psiUtil.parents @@ -94,8 +70,10 @@ abstract class KotlinIntroduceVariableHandler : RefactoringActionHandler { if (file !is KtFile) return try { - selectElement(editor, file, failOnEmptySuggestion = false, listOf(ElementKind.EXPRESSION)) { - collectCandidateTargetContainersAndDoRefactoring(project, editor, it as KtExpression?, isVar = false) + selectElement(editor, file, failOnEmptySuggestion = false, listOf(ElementKind.EXPRESSION)) { psi -> + SlowOperations.knownIssue("KTIJ-31332").use { + collectCandidateTargetContainersAndDoRefactoring(project, editor, psi as KtExpression?, isVar = false) + } } } catch (e: IntroduceRefactoringException) { showErrorHint(project, editor, e.message!!) diff --git a/plugins/markdown/core/src/org/intellij/plugins/markdown/editor/tables/ui/MarkdownInlayUpdateOnSoftWrapListener.kt b/plugins/markdown/core/src/org/intellij/plugins/markdown/editor/tables/ui/MarkdownInlayUpdateOnSoftWrapListener.kt index 69ba21455099..4414cc281758 100644 --- a/plugins/markdown/core/src/org/intellij/plugins/markdown/editor/tables/ui/MarkdownInlayUpdateOnSoftWrapListener.kt +++ b/plugins/markdown/core/src/org/intellij/plugins/markdown/editor/tables/ui/MarkdownInlayUpdateOnSoftWrapListener.kt @@ -9,6 +9,7 @@ import com.intellij.openapi.editor.event.EditorFactoryListener import com.intellij.openapi.editor.ex.SoftWrapChangeListener import com.intellij.openapi.editor.ex.SoftWrapModelEx import com.intellij.openapi.fileTypes.FileTypeManager +import com.intellij.util.SlowOperations import org.intellij.plugins.markdown.lang.MarkdownFileType /** @@ -17,16 +18,17 @@ import org.intellij.plugins.markdown.lang.MarkdownFileType internal class MarkdownInlayUpdateOnSoftWrapListener: EditorFactoryListener { override fun editorCreated(event: EditorFactoryEvent) { val editor = event.editor - if (ReadAction.compute { isMarkdownEditor(editor) }) { - val softWrapModel = (editor.softWrapModel as? SoftWrapModelEx) ?: return - softWrapModel.addSoftWrapChangeListener(object : SoftWrapChangeListener { - override fun softWrapsChanged() { - InlayHintsPassFactoryInternal.forceHintsUpdateOnNextPass() - } - - override fun recalculationEnds() = Unit - }) + SlowOperations.knownIssue("IJPL-162344").use { + if (!ReadAction.compute { isMarkdownEditor(editor) }) return } + val softWrapModel = (editor.softWrapModel as? SoftWrapModelEx) ?: return + softWrapModel.addSoftWrapChangeListener(object : SoftWrapChangeListener { + override fun softWrapsChanged() { + InlayHintsPassFactoryInternal.forceHintsUpdateOnNextPass() + } + + override fun recalculationEnds() = Unit + }) } private fun isMarkdownEditor(editor: Editor): Boolean =