From b4ec1e27d282ee57573f9018abd4a236421d5bc1 Mon Sep 17 00:00:00 2001 From: Denis Zhdanov Date: Fri, 18 Feb 2011 17:38:31 +0300 Subject: [PATCH] Don't perform 'sequential formatting' for all actions over 'reformat' --- .../actions/ReformatAndOptimizeImportsProcessor.java | 2 +- .../codeInsight/actions/ReformatCodeProcessor.java | 4 +++- .../src/com/intellij/formatting/FormatterImpl.java | 5 +++++ .../formatting/FormattingProgressIndicatorImpl.java | 2 ++ .../src/com/intellij/psi/formatter/FormatterUtil.java | 11 +++++++++++ .../com/intellij/openapi/actionSystem/IdeActions.java | 1 + .../com/intellij/util/containers/ContainerUtil.java | 3 ++- 7 files changed, 25 insertions(+), 3 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/actions/ReformatAndOptimizeImportsProcessor.java b/platform/lang-impl/src/com/intellij/codeInsight/actions/ReformatAndOptimizeImportsProcessor.java index 085cb6e2aeb4..8d82a14c80be 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/actions/ReformatAndOptimizeImportsProcessor.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/actions/ReformatAndOptimizeImportsProcessor.java @@ -28,8 +28,8 @@ import org.jetbrains.annotations.NotNull; * @author max */ public class ReformatAndOptimizeImportsProcessor extends AbstractLayoutCodeProcessor { + public static final String COMMAND_NAME = CodeInsightBundle.message("progress.reformat.code.prepare"); private static final String PROGRESS_TEXT = CodeInsightBundle.message("reformat.progress.common.text"); - private static final String COMMAND_NAME = CodeInsightBundle.message("progress.reformat.code.prepare"); private final OptimizeImportsProcessor myOptimizeImportsProcessor; private final ReformatCodeProcessor myReformatCodeProcessor; diff --git a/platform/lang-impl/src/com/intellij/codeInsight/actions/ReformatCodeProcessor.java b/platform/lang-impl/src/com/intellij/codeInsight/actions/ReformatCodeProcessor.java index 32c786dad77a..ab3942f98bce 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/actions/ReformatCodeProcessor.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/actions/ReformatCodeProcessor.java @@ -28,11 +28,13 @@ import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; public class ReformatCodeProcessor extends AbstractLayoutCodeProcessor { + + public static final String COMMAND_NAME = CodeInsightBundle.message("process.reformat.code"); + private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.actions.ReformatCodeProcessor"); private final TextRange myRange; private static final String PROGRESS_TEXT = CodeInsightBundle.message("reformat.progress.common.text"); - private static final String COMMAND_NAME = CodeInsightBundle.message("process.reformat.code"); public ReformatCodeProcessor(Project project) { super(project, COMMAND_NAME, PROGRESS_TEXT); diff --git a/platform/lang-impl/src/com/intellij/formatting/FormatterImpl.java b/platform/lang-impl/src/com/intellij/formatting/FormatterImpl.java index 02a7cc6ff350..0463c393a3d8 100644 --- a/platform/lang-impl/src/com/intellij/formatting/FormatterImpl.java +++ b/platform/lang-impl/src/com/intellij/formatting/FormatterImpl.java @@ -18,6 +18,7 @@ package com.intellij.formatting; import com.intellij.openapi.application.Application; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.components.ApplicationComponent; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileTypes.FileType; @@ -25,6 +26,7 @@ import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiFile; import com.intellij.psi.codeStyle.CodeStyleSettings; +import com.intellij.psi.formatter.FormatterUtil; import com.intellij.psi.formatter.FormattingDocumentModelImpl; import com.intellij.psi.formatter.PsiBasedFormattingModel; import com.intellij.util.IncorrectOperationException; @@ -92,6 +94,9 @@ public class FormatterImpl extends FormatterEx @Override public void setProgressIndicator(@NotNull FormattingProgressIndicatorImpl progressIndicator) { + if (!FormatterUtil.FORMATTER_ACTION_NAMES.contains(CommandProcessor.getInstance().getCurrentCommandName())) { + return; + } myProgressIndicator = progressIndicator; } diff --git a/platform/lang-impl/src/com/intellij/formatting/FormattingProgressIndicatorImpl.java b/platform/lang-impl/src/com/intellij/formatting/FormattingProgressIndicatorImpl.java index 1a57f2c4a1bc..6353ecdbb8c5 100644 --- a/platform/lang-impl/src/com/intellij/formatting/FormattingProgressIndicatorImpl.java +++ b/platform/lang-impl/src/com/intellij/formatting/FormattingProgressIndicatorImpl.java @@ -17,6 +17,7 @@ package com.intellij.formatting; import com.intellij.codeInsight.CodeInsightBundle; import com.intellij.ide.IdeBundle; +import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.command.undo.UndoManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Document; @@ -27,6 +28,7 @@ import com.intellij.openapi.progress.Task; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFile; +import com.intellij.psi.formatter.FormatterUtil; import com.intellij.util.SequentialTask; import com.intellij.util.containers.HashSet; import com.intellij.util.ui.UIUtil; diff --git a/platform/lang-impl/src/com/intellij/psi/formatter/FormatterUtil.java b/platform/lang-impl/src/com/intellij/psi/formatter/FormatterUtil.java index 15dce65f488b..a02f05eebb9d 100644 --- a/platform/lang-impl/src/com/intellij/psi/formatter/FormatterUtil.java +++ b/platform/lang-impl/src/com/intellij/psi/formatter/FormatterUtil.java @@ -15,6 +15,8 @@ */ package com.intellij.psi.formatter; +import com.intellij.codeInsight.actions.ReformatAndOptimizeImportsProcessor; +import com.intellij.codeInsight.actions.ReformatCodeProcessor; import com.intellij.lang.ASTFactory; import com.intellij.lang.ASTNode; import com.intellij.openapi.util.TextRange; @@ -27,12 +29,21 @@ import com.intellij.psi.tree.IElementType; import com.intellij.psi.tree.TokenSet; import com.intellij.util.CharTable; import com.intellij.util.containers.ContainerUtil; +import com.intellij.util.containers.HashSet; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.Collections; import java.util.List; +import java.util.Set; public class FormatterUtil { + private static final List ourHelpers = ContainerUtil.createEmptyCOWList(); + + public static final Collection FORMATTER_ACTION_NAMES = Collections.unmodifiableCollection(ContainerUtil.addAll( + new HashSet(), ReformatAndOptimizeImportsProcessor.COMMAND_NAME, ReformatCodeProcessor.COMMAND_NAME + )); private FormatterUtil() { } diff --git a/platform/platform-api/src/com/intellij/openapi/actionSystem/IdeActions.java b/platform/platform-api/src/com/intellij/openapi/actionSystem/IdeActions.java index 084d92ab0af4..919717957f94 100644 --- a/platform/platform-api/src/com/intellij/openapi/actionSystem/IdeActions.java +++ b/platform/platform-api/src/com/intellij/openapi/actionSystem/IdeActions.java @@ -51,6 +51,7 @@ public interface IdeActions { @NonNls String ACTION_EDITOR_NEXT_TEMPLATE_VARIABLE = "NextTemplateVariable"; @NonNls String ACTION_EDITOR_PREVIOUS_TEMPLATE_VARIABLE = "PreviousTemplateVariable"; + @NonNls String ACTION_EDITOR_REFORMAT = "ReformatCode"; @NonNls String ACTION_COMMENT_LINE = "CommentByLineComment"; diff --git a/platform/util/src/com/intellij/util/containers/ContainerUtil.java b/platform/util/src/com/intellij/util/containers/ContainerUtil.java index b6d593ab8f59..3aee063622d7 100644 --- a/platform/util/src/com/intellij/util/containers/ContainerUtil.java +++ b/platform/util/src/com/intellij/util/containers/ContainerUtil.java @@ -478,11 +478,12 @@ public class ContainerUtil { } } - public static void addAll(@NotNull Collection collection, @NotNull T... elements) { + public static Collection addAll(@NotNull Collection collection, @NotNull T... elements) { //noinspection ManualArrayToCollectionCopy for (T element : elements) { collection.add(element); } + return collection; } public static U findInstance(@NotNull Iterable iterable, @NotNull Class aClass) {