From c8ef7bed425ab74dd75da64a5d5eb6d3e24d389d Mon Sep 17 00:00:00 2001 From: Yaroslav Lepenkin Date: Mon, 21 Nov 2016 15:39:21 +0300 Subject: [PATCH] Do not optimize imports in dumb mode (it can happen via ReformatCodeAction) --- .../codeInsight/actions/OptimizeImportsProcessor.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/actions/OptimizeImportsProcessor.java b/platform/lang-impl/src/com/intellij/codeInsight/actions/OptimizeImportsProcessor.java index 6d30372e23e9..9e6810794d13 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/actions/OptimizeImportsProcessor.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/actions/OptimizeImportsProcessor.java @@ -20,6 +20,7 @@ import com.intellij.codeInsight.CodeInsightBundle; import com.intellij.lang.ImportOptimizer; import com.intellij.lang.LanguageImportStatements; import com.intellij.openapi.module.Module; +import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.EmptyRunnable; import com.intellij.psi.PsiDirectory; @@ -34,7 +35,8 @@ import java.util.List; import java.util.Set; import java.util.concurrent.FutureTask; -import static com.intellij.codeInsight.actions.OptimizeImportsProcessor.NotificationInfo.*; +import static com.intellij.codeInsight.actions.OptimizeImportsProcessor.NotificationInfo.NOTHING_CHANGED_NOTIFICATION; +import static com.intellij.codeInsight.actions.OptimizeImportsProcessor.NotificationInfo.SOMETHING_CHANGED_WITHOUT_MESSAGE_NOTIFICATION; public class OptimizeImportsProcessor extends AbstractLayoutCodeProcessor { private static final String PROGRESS_TEXT = CodeInsightBundle.message("progress.text.optimizing.imports"); @@ -76,6 +78,10 @@ public class OptimizeImportsProcessor extends AbstractLayoutCodeProcessor { @Override @NotNull protected FutureTask prepareTask(@NotNull PsiFile file, boolean processChangedTextOnly) { + if (DumbService.isDumb(file.getProject())) { + return new FutureTask<>(EmptyRunnable.INSTANCE, true); + } + final Set optimizers = LanguageImportStatements.INSTANCE.forFile(file); final List runnables = new ArrayList<>(); List files = file.getViewProvider().getAllFiles(); @@ -87,7 +93,7 @@ public class OptimizeImportsProcessor extends AbstractLayoutCodeProcessor { } } - Runnable runnable = !runnables.isEmpty() ? (Runnable)() -> { + Runnable runnable = !runnables.isEmpty() ? () -> { CodeStyleManagerImpl.setSequentialProcessingAllowed(false); try { for (Runnable runnable1 : runnables) { @@ -100,6 +106,7 @@ public class OptimizeImportsProcessor extends AbstractLayoutCodeProcessor { CodeStyleManagerImpl.setSequentialProcessingAllowed(true); } } : EmptyRunnable.getInstance(); + return new FutureTask<>(runnable, true); }