From 2d6f7dd44b77879dff380bcfdca87b8b4de998a9 Mon Sep 17 00:00:00 2001 From: "Rustam.Vishnyakov" Date: Fri, 4 Mar 2011 13:44:31 +0300 Subject: [PATCH] Separate ActionScript/JS formatter settings: fixed configurable modification test --- .../psi/codeStyle/CommonCodeStyleSettings.java | 13 +++++++++++-- .../codeStyle/CommonCodeStyleSettingsManager.java | 4 +++- 2 files changed, 14 insertions(+), 3 deletions(-) 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 5bd8c3d1854a..31f417dcad61 100644 --- a/platform/lang-api/src/com/intellij/psi/codeStyle/CommonCodeStyleSettings.java +++ b/platform/lang-api/src/com/intellij/psi/codeStyle/CommonCodeStyleSettings.java @@ -53,19 +53,22 @@ public class CommonCodeStyleSettings { void copyNonDefaultValuesFrom(CommonCodeStyleSettings from) { CommonCodeStyleSettings defaultSettings = new CommonCodeStyleSettings(null); - copyFields(this.getClass().getFields(), from, this, new DifferenceFilter(from, defaultSettings)); + PARENT_SETTINGS_INSTALLED = + copyFields(this.getClass().getFields(), from, this, new DifferenceFilter(from, defaultSettings)); } private static void copyFields(Field[] fields, Object from, Object to) { copyFields(fields, from, to, null); } - private static void copyFields(Field[] fields, Object from, Object to, DifferenceFilter diffFilter) { + private static boolean copyFields(Field[] fields, Object from, Object to, DifferenceFilter diffFilter) { + boolean valuesChanged = false; for (Field field : fields) { if (isPublic(field) && !isFinal(field)) { try { if (diffFilter == null || diffFilter.isAccept(field)) { copyFieldValue(from, to, field); + valuesChanged = true; } } catch (Exception e) { @@ -73,6 +76,7 @@ public class CommonCodeStyleSettings { } } } + return valuesChanged; } private static void copyFieldValue(final Object from, Object to, final Field field) @@ -704,5 +708,10 @@ public class CommonCodeStyleSettings { //-------------------------Enums---------------------------------------------------------- public int ENUM_CONSTANTS_WRAP = DO_NOT_WRAP; + // + // The flag telling that original default settings were overwritten with non-default + // values from shared code style settings (happens upon the very first initialization). + // + public boolean PARENT_SETTINGS_INSTALLED = false; } 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 c5f8f875f46b..c443d667e893 100644 --- a/platform/lang-api/src/com/intellij/psi/codeStyle/CommonCodeStyleSettingsManager.java +++ b/platform/lang-api/src/com/intellij/psi/codeStyle/CommonCodeStyleSettingsManager.java @@ -138,7 +138,9 @@ public class CommonCodeStyleSettingsManager implements JDOMExternalizable { Element commonSettingsElement = new Element(COMMON_SETTINGS_TAG); commonSettings.writeExternal(commonSettingsElement); commonSettingsElement.setAttribute(LANGUAGE_ATTR, language.getID()); - element.addContent(commonSettingsElement); + if (!commonSettingsElement.getChildren().isEmpty()) { + element.addContent(commonSettingsElement); + } } } }