diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ex/LocalQuickFixWrapper.java b/platform/lang-impl/src/com/intellij/codeInspection/ex/LocalQuickFixWrapper.java index 787b1273c759..4a7d86c6e2e2 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ex/LocalQuickFixWrapper.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ex/LocalQuickFixWrapper.java @@ -140,7 +140,10 @@ public final class LocalQuickFixWrapper extends QuickFixAction { @NotNull GlobalInspectionContextImpl context, Set ignoredElements) { if (myFix instanceof BatchQuickFix) { - applyFix(project, context, BatchModeDescriptorsUtil.flattenDescriptors(descriptors), ignoredElements); + executeAndNotify(project, () -> { + BatchExecutionResult result = applyFix(project, context, BatchModeDescriptorsUtil.flattenDescriptors(descriptors), ignoredElements); + return result.getMessage(); + }); } else { super.performFixesInBatch(project, descriptors, context, ignoredElements); diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ex/QuickFixAction.java b/platform/lang-impl/src/com/intellij/codeInspection/ex/QuickFixAction.java index 759ed0c874de..dbcbe8133f55 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ex/QuickFixAction.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ex/QuickFixAction.java @@ -49,6 +49,7 @@ import javax.swing.*; import javax.swing.tree.TreePath; import java.awt.event.MouseEvent; import java.util.*; +import java.util.function.Supplier; public abstract class QuickFixAction extends AnAction implements CustomComponentAction { private static final Logger LOG = Logger.getInstance(QuickFixAction.class); @@ -175,14 +176,14 @@ public abstract class QuickFixAction extends AnAction implements CustomComponent Set ignoredElements) { final String templatePresentationText = getTemplatePresentation().getText(); assert templatePresentationText != null; - Ref<@Nls String> messageRef = Ref.create(); - CommandProcessor.getInstance().executeCommand(project, () -> { + executeAndNotify(project, () -> { CommandProcessor.getInstance().markCurrentCommandAsGlobal(project); boolean startInWriteAction = startInWriteAction(); PerformFixesTask performFixesTask = new PerformFixesTask(project, descriptors, ignoredElements, context); if (startInWriteAction) { ((ApplicationImpl)ApplicationManager.getApplication()) .runWriteActionWithCancellableProgressInDispatchThread(templatePresentationText, project, null, performFixesTask::doRun); + return null; } else { final SequentialModalProgressTask progressTask = @@ -190,9 +191,16 @@ public abstract class QuickFixAction extends AnAction implements CustomComponent progressTask.setMinIterationTime(200); progressTask.setTask(performFixesTask); ProgressManager.getInstance().run(progressTask); - messageRef.set(performFixesTask.getResultMessage(templatePresentationText)); + return performFixesTask.getResultMessage(templatePresentationText); } - }, templatePresentationText, null); + }); + } + + void executeAndNotify(@NotNull Project project, @NotNull Supplier<@Nls String> command) { + final String templatePresentationText = getTemplatePresentation().getText(); + assert templatePresentationText != null; + Ref<@Nls String> messageRef = Ref.create(); + CommandProcessor.getInstance().executeCommand(project, () -> messageRef.set(command.get()), templatePresentationText, null); String message = messageRef.get(); if (message != null) { BATCH_QUICK_FIX_MESSAGES.createNotification(HtmlChunk.text(message).toString(), NotificationType.WARNING)