diff --git a/platform/lang-impl/src/com/intellij/codeInsight/actions/AbstractLayoutCodeProcessor.java b/platform/lang-impl/src/com/intellij/codeInsight/actions/AbstractLayoutCodeProcessor.java index cac49ae29f8e..f2e8685c8f91 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/actions/AbstractLayoutCodeProcessor.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/actions/AbstractLayoutCodeProcessor.java @@ -278,7 +278,7 @@ public abstract class AbstractLayoutCodeProcessor { return new FileTreeIterator(myProject); } - return new FileTreeIterator(Collections.emptyList()); + return new FileTreeIterator(Collections.emptyList()); } @NotNull @@ -355,7 +355,7 @@ public abstract class AbstractLayoutCodeProcessor { LOG.error(e); } }; - runLayoutCodeProcess(readAction, writeAction, false ); + runLayoutCodeProcess(readAction, writeAction); } private boolean checkFileWritable(final PsiFile file){ @@ -396,7 +396,7 @@ public abstract class AbstractLayoutCodeProcessor { return !GeneratedSourcesFilter.isGeneratedSourceByAnyFilter(virtualFile, file.getProject()); } - private void runLayoutCodeProcess(final Runnable readAction, final Runnable writeAction, final boolean globalAction) { + private void runLayoutCodeProcess(final Runnable readAction, final Runnable writeAction) { final ProgressWindow progressWindow = new ProgressWindow(true, myProject); progressWindow.setTitle(myCommandName); progressWindow.setText(myProgressText); @@ -418,7 +418,6 @@ public abstract class AbstractLayoutCodeProcessor { } final Runnable writeRunnable = () -> CommandProcessor.getInstance().executeCommand(myProject, () -> { - if (globalAction) CommandProcessor.getInstance().markCurrentCommandAsGlobal(myProject); try { writeAction.run(); @@ -544,18 +543,15 @@ public abstract class AbstractLayoutCodeProcessor { } private void performFileProcessing(@NotNull PsiFile file) { - myProcessors.stream().forEach((processor) -> { - Ref> writeTaskRef = Ref.create(); - - ApplicationManager.getApplication().runReadAction(() -> writeTaskRef.set(processor.prepareTask(file, myProcessChangedTextOnly))); + for (AbstractLayoutCodeProcessor processor : myProcessors) { + FutureTask writeTask = ReadAction.compute(() -> processor.prepareTask(file, myProcessChangedTextOnly)); ProgressIndicatorProvider.checkCanceled(); - FutureTask writeTask = writeTaskRef.get(); - + ApplicationManager.getApplication().invokeAndWait(() -> WriteCommandAction.runWriteCommandAction(myProject, myCommandName, null, writeTask)); checkStop(writeTask, file); - }); + } } private void checkStop(FutureTask task, PsiFile file) { @@ -565,6 +561,11 @@ public abstract class AbstractLayoutCodeProcessor { } } catch (InterruptedException | ExecutionException e) { + Throwable cause = e.getCause(); + if (cause instanceof IndexNotReadyException) { + LOG.warn(cause); + return; + } LOG.error("Got unexpected exception during formatting " + file, e); } }