From 22aa31baf8fe4aed41fe5f03a4c9e0ba964f34ef Mon Sep 17 00:00:00 2001 From: Rustam Vishnyakov Date: Wed, 27 Dec 2017 13:05:08 +0300 Subject: [PATCH] Deprecate common code style settings in CodeStyleSettings class Common settings can be referenced only by language. --- .../psi/codeStyle/CodeStyleSettings.java | 29 +- .../codeStyle/CommonCodeStyleSettings.java | 11 +- .../CommonCodeStyleSettingsManager.java | 34 ++- .../LanguageCodeStyleSettingsProvider.java | 2 +- .../codeStyle/LegacyCodeStyleSettings.java | 282 ++++++++++++++++++ .../options/CodeStyleAbstractPanel.java | 3 + .../codeStyle/CodeStyleBlankLinesPanel.java | 2 +- .../codeStyle/OptionTreeWithPreviewPanel.java | 2 +- .../source/codeStyle/CodeFormatterFacade.java | 2 +- .../codeStyle/PostFormatProcessorHelper.java | 11 + ...apApplianceOnDocumentModificationTest.java | 6 +- .../PyFromImportPostFormatProcessor.java | 14 +- .../html/HtmlQuotesFormatPreprocessor.java | 3 +- 13 files changed, 359 insertions(+), 42 deletions(-) create mode 100644 platform/lang-api/src/com/intellij/psi/codeStyle/LegacyCodeStyleSettings.java diff --git a/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettings.java b/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettings.java index 3540d677a0c2..1c9d72611c1d 100644 --- a/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettings.java +++ b/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettings.java @@ -35,6 +35,8 @@ import java.util.*; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; +import static com.intellij.psi.codeStyle.CommonCodeStyleSettings.IndentOptions; + /** *

* A container for global, language and custom code style settings and indent options. Global options are default options for multiple @@ -51,7 +53,7 @@ import java.util.regex.PatternSyntaxException; * Note: A direct use of any non-final public fields from {@code CodeStyleSettings} class is strongly discouraged. These fields, * as well as the inheritance from {@code CommonCodeStyleSettings}, are left only for backwards compatibility and may be removed in the future. */ -public class CodeStyleSettings extends CommonCodeStyleSettings +public class CodeStyleSettings extends LegacyCodeStyleSettings implements Cloneable, JDOMExternalizable, ImportsLayoutSettings, CodeStyleConstraints { public static final int CURR_VERSION = 173; @@ -70,6 +72,8 @@ public class CodeStyleSettings extends CommonCodeStyleSettings private UnknownElementWriter myUnknownElementWriter = UnknownElementWriter.EMPTY; + private SoftMargins mySoftMargins = new SoftMargins(); + private int myVersion = CURR_VERSION; public CodeStyleSettings() { @@ -77,7 +81,6 @@ public class CodeStyleSettings extends CommonCodeStyleSettings } public CodeStyleSettings(boolean loadExtensions) { - super(null); initTypeToName(); initImportsByDefault(); @@ -181,9 +184,9 @@ public class CodeStyleSettings extends CommonCodeStyleSettings } public void copyFrom(CodeStyleSettings from) { - copyPublicFields(from, this); - copyPublicFields(from.OTHER_INDENT_OPTIONS, OTHER_INDENT_OPTIONS); - mySoftMargins.setValues(from.getSoftMargins()); + CommonCodeStyleSettings.copyPublicFields(from, this); + CommonCodeStyleSettings.copyPublicFields(from.OTHER_INDENT_OPTIONS, OTHER_INDENT_OPTIONS); + mySoftMargins.setValues(from.getDefaultSoftMargins()); copyCustomSettingsFrom(from); } @@ -897,7 +900,6 @@ public class CodeStyleSettings extends CommonCodeStyleSettings return new IndentOptions(); } - @Override @Nullable public IndentOptions getIndentOptions() { return OTHER_INDENT_OPTIONS; @@ -1040,8 +1042,11 @@ public class CodeStyleSettings extends CommonCodeStyleSettings @Nullable private IndentOptions getIndentOptions(Language lang) { - CommonCodeStyleSettings langSettings = getCommonSettings(lang); - return langSettings == this ? null : langSettings.getIndentOptions(); + final LanguageCodeStyleSettingsProvider provider = LanguageCodeStyleSettingsProvider.forLanguage(lang); + if (provider != null) { + return getCommonSettings(lang).getIndentOptions(); + } + return null; } public boolean isSmartTabs(FileType fileType) { @@ -1307,8 +1312,8 @@ public class CodeStyleSettings extends CommonCodeStyleSettings if (language != null) { CommonCodeStyleSettings langSettings = getCommonSettings(language); if (langSettings != null) { - if (langSettings.WRAP_ON_TYPING != WrapOnTyping.DEFAULT.intValue) { - return langSettings.WRAP_ON_TYPING == WrapOnTyping.WRAP.intValue; + if (langSettings.WRAP_ON_TYPING != CommonCodeStyleSettings.WrapOnTyping.DEFAULT.intValue) { + return langSettings.WRAP_ON_TYPING == CommonCodeStyleSettings.WrapOnTyping.WRAP.intValue; } } } @@ -1425,7 +1430,7 @@ public class CodeStyleSettings extends CommonCodeStyleSettings */ @NotNull public List getDefaultSoftMargins() { - return getSoftMargins(); + return mySoftMargins.getValues(); } /** @@ -1433,6 +1438,6 @@ public class CodeStyleSettings extends CommonCodeStyleSettings * @param softMargins The default soft margins. */ public void setDefaultSoftMargins(List softMargins) { - setSoftMargins(softMargins); + mySoftMargins.setValues(softMargins); } } diff --git a/platform/lang-api/src/com/intellij/psi/codeStyle/CommonCodeStyleSettings.java b/platform/lang-api/src/com/intellij/psi/codeStyle/CommonCodeStyleSettings.java index a805a8e5d2be..887cc1983fca 100644 --- a/platform/lang-api/src/com/intellij/psi/codeStyle/CommonCodeStyleSettings.java +++ b/platform/lang-api/src/com/intellij/psi/codeStyle/CommonCodeStyleSettings.java @@ -58,11 +58,11 @@ public class CommonCodeStyleSettings { private ArrangementSettings myArrangementSettings; private CodeStyleSettings myRootSettings; - private IndentOptions myIndentOptions; + private @Nullable IndentOptions myIndentOptions; private final FileType myFileType; private boolean myForceArrangeMenuAvailable; - protected SoftMargins mySoftMargins = new SoftMargins(); + private SoftMargins mySoftMargins = new SoftMargins(); @NonNls private static final String INDENT_OPTIONS_TAG = "indentOptions"; @@ -138,7 +138,7 @@ public class CommonCodeStyleSettings { return commonSettings; } - protected static void copyPublicFields(Object from, Object to) { + static void copyPublicFields(Object from, Object to) { assert from != to; ReflectionUtil.copyFields(to.getClass().getFields(), from, to); } @@ -169,6 +169,9 @@ public class CommonCodeStyleSettings { if (supportedFields != null) { supportedFields.add("FORCE_REARRANGE_MODE"); } + else { + return; + } DefaultJDOMExternalizer.writeExternal(this, element, new SupportedFieldsDiffFilter(this, supportedFields, defaultSettings)); mySoftMargins.serializeInto(element); if (myIndentOptions != null) { @@ -207,7 +210,7 @@ public class CommonCodeStyleSettings { @Override public boolean isAccept(@NotNull Field field) { - if (mySupportedFieldNames == null || + if (mySupportedFieldNames != null && mySupportedFieldNames.contains(field.getName())) { return super.isAccept(field); } diff --git a/platform/lang-api/src/com/intellij/psi/codeStyle/CommonCodeStyleSettingsManager.java b/platform/lang-api/src/com/intellij/psi/codeStyle/CommonCodeStyleSettingsManager.java index e93f764af373..9d12838a214f 100644 --- a/platform/lang-api/src/com/intellij/psi/codeStyle/CommonCodeStyleSettingsManager.java +++ b/platform/lang-api/src/com/intellij/psi/codeStyle/CommonCodeStyleSettingsManager.java @@ -16,12 +16,14 @@ package com.intellij.psi.codeStyle; import com.intellij.lang.Language; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.JDOMUtil; import com.intellij.openapi.util.WriteExternalException; import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.ArrayUtil; +import com.intellij.util.ObjectUtils; import com.intellij.util.containers.ContainerUtil; import gnu.trove.THashMap; import org.jdom.Content; @@ -48,6 +50,15 @@ public class CommonCodeStyleSettingsManager { @NonNls static final String COMMON_SETTINGS_TAG = "codeStyleSettings"; private static final String LANGUAGE_ATTR = "language"; + private static Logger LOG = Logger.getInstance(CommonCodeStyleSettingsManager.class); + + private static class DefaultsHolder { + private final static CommonCodeStyleSettings SETTINGS = new CommonCodeStyleSettings(Language.ANY); + static { + SETTINGS.setRootSettings(CodeStyleSettings.getDefaults()); + } + } + CommonCodeStyleSettingsManager(@NotNull CodeStyleSettings parentSettings) { myParentSettings = parentSettings; } @@ -58,20 +69,21 @@ public class CommonCodeStyleSettingsManager { * @param lang The language to get settings for. * @return If the provider for the language exists and is able to create language-specific default settings * ({@code LanguageCodeStyleSettingsProvider.getDefaultCommonSettings()} doesn't return null) - * returns the instance of settings for this language. Otherwise returns the instance of parent settings - * shared between several languages. + * returns the instance of settings for this language. Otherwise returns new instance of common code style settings + * with default values. */ public CommonCodeStyleSettings getCommonSettings(@Nullable Language lang) { Map commonSettingsMap = getCommonSettingsMap(); - CommonCodeStyleSettings settings = commonSettingsMap.get(lang); - while (settings == null && lang != null) { - lang = lang.getBaseLanguage(); - settings = commonSettingsMap.get(lang); + Language baseLang = ObjectUtils.notNull(lang, Language.ANY); + while (baseLang != null) { + CommonCodeStyleSettings settings = commonSettingsMap.get(baseLang); + if (settings != null) return settings; + baseLang = baseLang.getBaseLanguage(); } - if (settings != null) { - return settings; + if (lang != null) { + LOG.warn("Common code style settings for language '" + lang.getDisplayName() + "' not found, using defaults."); } - return myParentSettings; + return DefaultsHolder.SETTINGS; } @NotNull @@ -95,7 +107,7 @@ public class CommonCodeStyleSettingsManager { * obtained by name. * * @param langName The display name of the language whose settings must be returned. - * @return Common code style settings for the given language or parent (shared) settings if not found. + * @return Common code style settings for the given language or a new instance with default values if not found. */ @NotNull public CommonCodeStyleSettings getCommonSettings(@NotNull String langName) { @@ -105,7 +117,7 @@ public class CommonCodeStyleSettingsManager { return entry.getValue(); } } - return myParentSettings; + return new CommonCodeStyleSettings(Language.ANY); } diff --git a/platform/lang-api/src/com/intellij/psi/codeStyle/LanguageCodeStyleSettingsProvider.java b/platform/lang-api/src/com/intellij/psi/codeStyle/LanguageCodeStyleSettingsProvider.java index a1eede8835f9..1fd31c3c7d97 100644 --- a/platform/lang-api/src/com/intellij/psi/codeStyle/LanguageCodeStyleSettingsProvider.java +++ b/platform/lang-api/src/com/intellij/psi/codeStyle/LanguageCodeStyleSettingsProvider.java @@ -30,7 +30,7 @@ import java.util.ArrayList; import java.util.Set; /** - * Base class and extension point for code style settings shared between multiple languages + * Base class and extension point for common code style settings for a specific language. */ public abstract class LanguageCodeStyleSettingsProvider { public static final ExtensionPointName EP_NAME = diff --git a/platform/lang-api/src/com/intellij/psi/codeStyle/LegacyCodeStyleSettings.java b/platform/lang-api/src/com/intellij/psi/codeStyle/LegacyCodeStyleSettings.java new file mode 100644 index 000000000000..ac1314934c0c --- /dev/null +++ b/platform/lang-api/src/com/intellij/psi/codeStyle/LegacyCodeStyleSettings.java @@ -0,0 +1,282 @@ +// Copyright 2000-2017 JetBrains s.r.o. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +package com.intellij.psi.codeStyle; + +import com.intellij.lang.Language; +import com.intellij.psi.PsiFile; + +/** + * Contains fields which are left for compatibility with earlier versions. These fields shouldn't be used anymore. Every language must have + * its own settings which can be retrieved using {@link CodeStyleSettings#getCommonSettings(Language)} or + * {@link com.intellij.application.options.CodeStyle#getLanguageSettings(PsiFile)}. + * + * @see LanguageCodeStyleSettingsProvider + */ +@Deprecated +public class LegacyCodeStyleSettings { + /** + * @deprecated Use {@link CommonCodeStyleSettings#DO_NOT_WRAP} + */ + @Deprecated public static final int DO_NOT_WRAP = CommonCodeStyleSettings.DO_NOT_WRAP; + /** + * @deprecated Use {@link CommonCodeStyleSettings#WRAP_AS_NEEDED} + */ + @Deprecated public static final int WRAP_AS_NEEDED = CommonCodeStyleSettings.WRAP_AS_NEEDED; + /** + * @deprecated Use {@link CommonCodeStyleSettings#WRAP_ALWAYS} + */ + @Deprecated public static final int WRAP_ALWAYS = CommonCodeStyleSettings.WRAP_ALWAYS; + /** + * @deprecated Use {@link CommonCodeStyleSettings#WRAP_ON_EVERY_ITEM} + */ + @Deprecated public static final int WRAP_ON_EVERY_ITEM = CommonCodeStyleSettings.WRAP_ON_EVERY_ITEM; + + /** + * @deprecated Use {@link CommonCodeStyleSettings#DO_NOT_FORCE} + */ + @Deprecated public static final int DO_NOT_FORCE = CommonCodeStyleSettings.DO_NOT_FORCE; + /** + * @deprecated Use {@link CommonCodeStyleSettings#FORCE_BRACES_IF_MULTILINE} + */ + @Deprecated public static final int FORCE_BRACES_IF_MULTILINE = CommonCodeStyleSettings.FORCE_BRACES_IF_MULTILINE; + /** + * @deprecated Use {@link CommonCodeStyleSettings#FORCE_BRACES_ALWAYS} + */ + @Deprecated public static final int FORCE_BRACES_ALWAYS = CommonCodeStyleSettings.FORCE_BRACES_ALWAYS; + /** + * @deprecated Use {@link CommonCodeStyleSettings#END_OF_LINE} + */ + @Deprecated public static final int END_OF_LINE = 1; + /** + * @deprecated Use {@link CommonCodeStyleSettings#NEXT_LINE} + */ + @Deprecated public static final int NEXT_LINE = 2; + /** + * @deprecated Use {@link CommonCodeStyleSettings#NEXT_LINE_SHIFTED} + */ + @Deprecated public static final int NEXT_LINE_SHIFTED = 3; + /** + * @deprecated Use {@link CommonCodeStyleSettings#NEXT_LINE_SHIFTED2} + */ + @Deprecated public static final int NEXT_LINE_SHIFTED2 = 4; + /** + * @deprecated Use {@link CommonCodeStyleSettings#NEXT_LINE_IF_WRAPPED} + */ + @Deprecated public static final int NEXT_LINE_IF_WRAPPED = 5; + + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public int RIGHT_MARGIN = -1; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean KEEP_LINE_BREAKS = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean KEEP_FIRST_COLUMN_COMMENT = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean KEEP_CONTROL_STATEMENT_IN_ONE_LINE = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public int KEEP_BLANK_LINES_IN_DECLARATIONS = 2; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public int KEEP_BLANK_LINES_IN_CODE = 2; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public int KEEP_BLANK_LINES_BEFORE_RBRACE = 2; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public int BLANK_LINES_AROUND_CLASS = 1; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public int BLANK_LINES_AROUND_METHOD = 1; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean INDENT_CASE_FROM_SWITCH = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean ALIGN_MULTILINE_PARAMETERS_IN_CALLS = false; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean ALIGN_MULTILINE_BINARY_OPERATION = false; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean ALIGN_GROUP_FIELD_DECLARATIONS = false; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_AROUND_ASSIGNMENT_OPERATORS = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_AROUND_LOGICAL_OPERATORS = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_AROUND_EQUALITY_OPERATORS = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_AROUND_RELATIONAL_OPERATORS = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_AROUND_BITWISE_OPERATORS = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_AROUND_ADDITIVE_OPERATORS = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_AROUND_MULTIPLICATIVE_OPERATORS = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_AROUND_SHIFT_OPERATORS = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_AFTER_COMMA = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_BEFORE_COMMA = false; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_AFTER_SEMICOLON = true; // in for-statement + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_BEFORE_SEMICOLON = false; // in for-statement + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_WITHIN_PARENTHESES = false; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_WITHIN_METHOD_CALL_PARENTHESES = false; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_WITHIN_METHOD_PARENTHESES = false; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_WITHIN_IF_PARENTHESES = false; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_WITHIN_WHILE_PARENTHESES = false; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_WITHIN_CAST_PARENTHESES = false; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_WITHIN_BRACKETS = false; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_AFTER_TYPE_CAST = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_BEFORE_METHOD_CALL_PARENTHESES = false; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_BEFORE_METHOD_PARENTHESES = false; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_BEFORE_IF_PARENTHESES = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_BEFORE_WHILE_PARENTHESES = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_BEFORE_CLASS_LBRACE = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_BEFORE_METHOD_LBRACE = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_BEFORE_IF_LBRACE = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_BEFORE_WHILE_LBRACE = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_BEFORE_QUEST = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_AFTER_QUEST = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_BEFORE_COLON = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean SPACE_AFTER_COLON = true; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean KEEP_SIMPLE_BLOCKS_IN_ONE_LINE = false; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public int ARRAY_INITIALIZER_WRAP = CommonCodeStyleSettings.DO_NOT_WRAP; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean ARRAY_INITIALIZER_LBRACE_ON_NEXT_LINE = false; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public boolean ARRAY_INITIALIZER_RBRACE_ON_NEXT_LINE = false; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public int BRACE_STYLE = CommonCodeStyleSettings.END_OF_LINE; + /** + * @deprecated See {@link LegacyCodeStyleSettings} + */ + @Deprecated public int CLASS_BRACE_STYLE = CommonCodeStyleSettings.END_OF_LINE; +} diff --git a/platform/lang-impl/src/com/intellij/application/options/CodeStyleAbstractPanel.java b/platform/lang-impl/src/com/intellij/application/options/CodeStyleAbstractPanel.java index ac1b8fcd617b..98c9fa5958e7 100644 --- a/platform/lang-impl/src/com/intellij/application/options/CodeStyleAbstractPanel.java +++ b/platform/lang-impl/src/com/intellij/application/options/CodeStyleAbstractPanel.java @@ -386,6 +386,9 @@ public abstract class CodeStyleAbstractPanel implements Disposable { try { resetImpl(settings); } + catch (Exception e) { + LOG.error(e); + } finally { myShouldUpdatePreview = true; } diff --git a/platform/lang-impl/src/com/intellij/application/options/codeStyle/CodeStyleBlankLinesPanel.java b/platform/lang-impl/src/com/intellij/application/options/codeStyle/CodeStyleBlankLinesPanel.java index 989f5f75d387..7ed8e6e21f18 100644 --- a/platform/lang-impl/src/com/intellij/application/options/codeStyle/CodeStyleBlankLinesPanel.java +++ b/platform/lang-impl/src/com/intellij/application/options/codeStyle/CodeStyleBlankLinesPanel.java @@ -250,7 +250,7 @@ public class CodeStyleBlankLinesPanel extends CustomizableLanguageCodeStylePanel private int myCurrValue = Integer.MAX_VALUE; private IntOption(@NotNull String title, String fieldName) { - this(title, CodeStyleSettings.class, fieldName, false); + this(title, CommonCodeStyleSettings.class, fieldName, false); } private IntOption(@NotNull String title, Class targetClass, String fieldName) { diff --git a/platform/lang-impl/src/com/intellij/application/options/codeStyle/OptionTreeWithPreviewPanel.java b/platform/lang-impl/src/com/intellij/application/options/codeStyle/OptionTreeWithPreviewPanel.java index 5ab9aae15866..a5239bd3b6d0 100644 --- a/platform/lang-impl/src/com/intellij/application/options/codeStyle/OptionTreeWithPreviewPanel.java +++ b/platform/lang-impl/src/com/intellij/application/options/codeStyle/OptionTreeWithPreviewPanel.java @@ -374,7 +374,7 @@ public abstract class OptionTreeWithPreviewPanel extends CustomizableLanguageCod private void doInitBooleanField(@NonNls String fieldName, String title, String groupName) { try { - Class styleSettingsClass = CodeStyleSettings.class; + Class styleSettingsClass = CommonCodeStyleSettings.class; Field field = styleSettingsClass.getField(fieldName); String actualGroupName = getRemappedGroup(fieldName, groupName); diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeFormatterFacade.java b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeFormatterFacade.java index 05ce187fe02f..02762a625645 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeFormatterFacade.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeFormatterFacade.java @@ -72,7 +72,7 @@ public class CodeFormatterFacade { /** * This key is used as a flag that indicates if {@code 'wrap long line during formatting'} activity is performed now. * - * @see CodeStyleSettings#WRAP_LONG_LINES + * @see CommonCodeStyleSettings#WRAP_LONG_LINES */ public static final Key WRAP_LONG_LINE_DURING_FORMATTING_IN_PROGRESS_KEY = new Key<>("WRAP_LONG_LINE_DURING_FORMATTING_IN_PROGRESS_KEY"); diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/PostFormatProcessorHelper.java b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/PostFormatProcessorHelper.java index 6c10c6b36b51..dac315f716f8 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/PostFormatProcessorHelper.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/PostFormatProcessorHelper.java @@ -15,8 +15,10 @@ */ package com.intellij.psi.impl.source.codeStyle; +import com.intellij.lang.Language; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; +import com.intellij.psi.codeStyle.CodeStyleSettings; import com.intellij.psi.codeStyle.CommonCodeStyleSettings; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -29,6 +31,15 @@ public class PostFormatProcessorHelper { private int myDelta; private TextRange myResultTextRange; + /** + * @deprecated Use {@link #PostFormatProcessorHelper(CommonCodeStyleSettings)} first getting correct language settings + * with {@link CodeStyleSettings#getCommonSettings(Language)}! + */ + @Deprecated + public PostFormatProcessorHelper(final CodeStyleSettings rootSettings) { + mySettings = rootSettings.getCommonSettings(""); + } + public PostFormatProcessorHelper(final CommonCodeStyleSettings settings) { mySettings = settings; } diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/editor/impl/softwrap/mapping/SoftWrapApplianceOnDocumentModificationTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/editor/impl/softwrap/mapping/SoftWrapApplianceOnDocumentModificationTest.java index 982fd376ba2e..aaacbdae9d78 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/editor/impl/softwrap/mapping/SoftWrapApplianceOnDocumentModificationTest.java +++ b/platform/platform-tests/testSrc/com/intellij/openapi/editor/impl/softwrap/mapping/SoftWrapApplianceOnDocumentModificationTest.java @@ -11,7 +11,7 @@ import com.intellij.openapi.editor.impl.AbstractEditorTest; import com.intellij.openapi.editor.impl.EditorImpl; import com.intellij.openapi.editor.impl.SoftWrapModelImpl; import com.intellij.openapi.editor.markup.TextAttributes; -import com.intellij.openapi.fileTypes.PlainTextLanguage; +import com.intellij.openapi.fileTypes.PlainTextFileType; import com.intellij.psi.codeStyle.CommonCodeStyleSettings; import com.intellij.testFramework.EditorTestUtil; import com.intellij.testFramework.TestFileType; @@ -807,9 +807,7 @@ public class SoftWrapApplianceOnDocumentModificationTest extends AbstractEditorT VisualPosition caretPositionBefore = getEditor().getCaretModel().getVisualPosition(); // Change tab size. - final CommonCodeStyleSettings.IndentOptions indentOptions = getCurrentCodeStyleSettings() - .getCommonSettings(PlainTextLanguage.INSTANCE) - .getIndentOptions(); + final CommonCodeStyleSettings.IndentOptions indentOptions = getCurrentCodeStyleSettings().getIndentOptions(PlainTextFileType.INSTANCE); assertNotNull(indentOptions); indentOptions.TAB_SIZE++; diff --git a/python/src/com/jetbrains/python/formatter/PyFromImportPostFormatProcessor.java b/python/src/com/jetbrains/python/formatter/PyFromImportPostFormatProcessor.java index 5a129eb06bcc..4c479face5ad 100644 --- a/python/src/com/jetbrains/python/formatter/PyFromImportPostFormatProcessor.java +++ b/python/src/com/jetbrains/python/formatter/PyFromImportPostFormatProcessor.java @@ -16,10 +16,12 @@ package com.jetbrains.python.formatter; import com.intellij.openapi.util.TextRange; -import com.intellij.psi.*; +import com.intellij.psi.PsiComment; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiFile; +import com.intellij.psi.PsiWhiteSpace; import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.psi.codeStyle.CodeStyleSettings; -import com.intellij.psi.codeStyle.CommonCodeStyleSettings; import com.intellij.psi.impl.source.codeStyle.PostFormatProcessor; import com.intellij.psi.impl.source.codeStyle.PostFormatProcessorHelper; import com.intellij.util.containers.ContainerUtil; @@ -53,8 +55,8 @@ public class PyFromImportPostFormatProcessor implements PostFormatProcessor { private final List myImportStatements = new ArrayList<>(); private PsiElement myRootElement; - public Visitor(@NotNull CommonCodeStyleSettings settings) { - myHelper = new PostFormatProcessorHelper(settings); + public Visitor(@NotNull CodeStyleSettings settings) { + myHelper = new PostFormatProcessorHelper(settings.getCommonSettings(PythonLanguage.getInstance())); } @Override @@ -65,7 +67,7 @@ public class PyFromImportPostFormatProcessor implements PostFormatProcessor { final List importedNames = ContainerUtil.filter(node.getImportElements(), elem -> elem.getTextLength() != 0); if (importedNames.size() > 1) { - final PyCodeStyleSettings pySettings = ((CodeStyleSettings)myHelper.getSettings()).getCustomSettings(PyCodeStyleSettings.class); + final PyCodeStyleSettings pySettings = myHelper.getSettings().getRootSettings().getCustomSettings(PyCodeStyleSettings.class); final boolean forcedParens = pySettings.FROM_IMPORT_PARENTHESES_FORCE_IF_MULTILINE && PostFormatProcessorHelper.isMultiline(node); final boolean forcedComma = pySettings.FROM_IMPORT_TRAILING_COMMA_IF_MULTILINE && PostFormatProcessorHelper.isMultiline(node); final PyImportElement lastImportedName = importedNames.get(importedNames.size() - 1); @@ -138,7 +140,7 @@ public class PyFromImportPostFormatProcessor implements PostFormatProcessor { } lastElementWasComment = cur instanceof PsiComment; } - final PyCodeStyleSettings pySettings = ((CodeStyleSettings)myHelper.getSettings()).getCustomSettings(PyCodeStyleSettings.class); + final PyCodeStyleSettings pySettings = myHelper.getSettings().getRootSettings().getCustomSettings(PyCodeStyleSettings.class); if (lastVisibleNameCommaOffset != -1 && pySettings.FROM_IMPORT_TRAILING_COMMA_IF_MULTILINE) { newStatementText.insert(lastVisibleNameCommaOffset, ","); } diff --git a/xml/impl/src/com/intellij/lang/html/HtmlQuotesFormatPreprocessor.java b/xml/impl/src/com/intellij/lang/html/HtmlQuotesFormatPreprocessor.java index 7193a51cb175..1e2ebd343dcc 100644 --- a/xml/impl/src/com/intellij/lang/html/HtmlQuotesFormatPreprocessor.java +++ b/xml/impl/src/com/intellij/lang/html/HtmlQuotesFormatPreprocessor.java @@ -16,6 +16,7 @@ package com.intellij.lang.html; +import com.intellij.application.options.CodeStyle; import com.intellij.lang.ASTNode; import com.intellij.openapi.editor.Document; import com.intellij.openapi.project.Project; @@ -164,7 +165,7 @@ public class HtmlQuotesFormatPreprocessor implements PreFormatProcessor { } public static void runOnElement(@NotNull CodeStyleSettings.QuoteStyle quoteStyle, @NotNull PsiElement element) { - PostFormatProcessorHelper postFormatProcessorHelper = new PostFormatProcessorHelper(null); + PostFormatProcessorHelper postFormatProcessorHelper = new PostFormatProcessorHelper(CodeStyle.getDefaultSettings()); postFormatProcessorHelper.setResultTextRange(element.getTextRange()); new HtmlQuotesConverter(quoteStyle, element, postFormatProcessorHelper).run(); }