From 99cdbde0eae02fc59c8b44813297f0aa8aa300df Mon Sep 17 00:00:00 2001 From: Rustam Vishnyakov Date: Mon, 27 Aug 2018 17:46:34 +0300 Subject: [PATCH] Disabled formatting disables also optimize imports --- .../disabledFormatting_after.java | 12 ++++++++++++ .../disabledFormatting_before.java | 12 ++++++++++++ .../actions/ReformatCodeActionInEditorTest.java | 11 +++++++++++ .../com/intellij/lang/LanguageImportStatements.java | 7 +++++++ 4 files changed, 42 insertions(+) create mode 100644 java/java-tests/testData/actions/reformatFileInEditor/disabledFormatting_after.java create mode 100644 java/java-tests/testData/actions/reformatFileInEditor/disabledFormatting_before.java diff --git a/java/java-tests/testData/actions/reformatFileInEditor/disabledFormatting_after.java b/java/java-tests/testData/actions/reformatFileInEditor/disabledFormatting_after.java new file mode 100644 index 000000000000..d785644a3d6e --- /dev/null +++ b/java/java-tests/testData/actions/reformatFileInEditor/disabledFormatting_after.java @@ -0,0 +1,12 @@ +import java.lang.String; +import java.util.List; +import java.util.HashMap; +import java.util.ArrayList; +import java.util.HashSet; + + +public class Test { +public static void main(String[] args) { +List list = new ArrayList(); +} +} \ No newline at end of file diff --git a/java/java-tests/testData/actions/reformatFileInEditor/disabledFormatting_before.java b/java/java-tests/testData/actions/reformatFileInEditor/disabledFormatting_before.java new file mode 100644 index 000000000000..d785644a3d6e --- /dev/null +++ b/java/java-tests/testData/actions/reformatFileInEditor/disabledFormatting_before.java @@ -0,0 +1,12 @@ +import java.lang.String; +import java.util.List; +import java.util.HashMap; +import java.util.ArrayList; +import java.util.HashSet; + + +public class Test { +public static void main(String[] args) { +List list = new ArrayList(); +} +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/actions/ReformatCodeActionInEditorTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/actions/ReformatCodeActionInEditorTest.java index 82d1015c4a13..495e6f02b831 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/actions/ReformatCodeActionInEditorTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/actions/ReformatCodeActionInEditorTest.java @@ -16,12 +16,15 @@ package com.intellij.java.codeInsight.actions; import com.intellij.JavaTestUtil; +import com.intellij.application.options.CodeStyle; import com.intellij.codeInsight.actions.FileInEditorProcessor; import com.intellij.codeInsight.actions.FormatChangedTextUtil; import com.intellij.codeInsight.actions.LayoutCodeOptions; import com.intellij.codeInsight.actions.ReformatCodeRunOptions; +import com.intellij.formatting.fileSet.NamedScopeDescriptor; import com.intellij.openapi.editor.Document; import com.intellij.psi.PsiFile; +import com.intellij.psi.codeStyle.CodeStyleSettings; import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase; import static com.intellij.codeInsight.actions.TextRangeType.*; @@ -119,4 +122,12 @@ public class ReformatCodeActionInEditorTest extends LightPlatformCodeInsightFixt //todo actually test is not working, and working test is not working doTest(new ReformatCodeRunOptions(SELECTED_TEXT)); } + + public void testDisabledFormatting() { + CodeStyleSettings temp = new CodeStyleSettings(); + NamedScopeDescriptor descriptor = new NamedScopeDescriptor("Test"); + descriptor.setPattern("file:*.java"); + temp.getExcludedFiles().addDescriptor(descriptor); + CodeStyle.doWithTemporarySettings(getProject(), temp, () -> doTest(new ReformatCodeRunOptions(WHOLE_FILE).setOptimizeImports(true))); + } } diff --git a/platform/lang-api/src/com/intellij/lang/LanguageImportStatements.java b/platform/lang-api/src/com/intellij/lang/LanguageImportStatements.java index 52cd2e9b7c95..04f845117572 100644 --- a/platform/lang-api/src/com/intellij/lang/LanguageImportStatements.java +++ b/platform/lang-api/src/com/intellij/lang/LanguageImportStatements.java @@ -19,9 +19,12 @@ */ package com.intellij.lang; +import com.intellij.application.options.CodeStyle; import com.intellij.psi.PsiFile; +import com.intellij.psi.codeStyle.CodeStyleSettings; import org.jetbrains.annotations.NotNull; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -35,6 +38,10 @@ public class LanguageImportStatements extends LanguageExtension @NotNull public Set forFile(@NotNull PsiFile file) { + CodeStyleSettings settings = CodeStyle.getSettings(file); + if (settings.getExcludedFiles().contains(file)) { + return Collections.emptySet(); + } Set optimizers = new HashSet<>(); for (PsiFile psiFile : file.getViewProvider().getAllFiles()) { List langOptimizers = allForLanguage(psiFile.getLanguage());