From dc0887496c2afc8d2766eb388559679e0091594d Mon Sep 17 00:00:00 2001 From: Rustam Vishnyakov Date: Fri, 2 Aug 2013 17:40:13 +0400 Subject: [PATCH] CR-IC-1713 Make SpacingBuilder use correct language settings --- .../intellij/formatting/SpacingBuilder.java | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/platform/lang-api/src/com/intellij/formatting/SpacingBuilder.java b/platform/lang-api/src/com/intellij/formatting/SpacingBuilder.java index b2239193558f..7b751b0d27eb 100644 --- a/platform/lang-api/src/com/intellij/formatting/SpacingBuilder.java +++ b/platform/lang-api/src/com/intellij/formatting/SpacingBuilder.java @@ -1,8 +1,11 @@ package com.intellij.formatting; +import com.intellij.lang.Language; import com.intellij.psi.codeStyle.CodeStyleSettings; +import com.intellij.psi.codeStyle.CommonCodeStyleSettings; import com.intellij.psi.tree.IElementType; import com.intellij.psi.tree.TokenSet; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -109,13 +112,38 @@ public class SpacingBuilder { } } - private final CodeStyleSettings myCodeStyleSettings; + private final CommonCodeStyleSettings myCodeStyleSettings; private final List myRules = new ArrayList(); + /** + * @param codeStyleSettings + * @deprecated Use other constructors! + */ + @Deprecated public SpacingBuilder(CodeStyleSettings codeStyleSettings) { + // TODO: remove deprecated method (v.14) myCodeStyleSettings = codeStyleSettings; } + /** + * Creates SpacingBuilder with given code style settings and language whose settings must be used. + * @param codeStyleSettings The root code style settings. + * @param language The language to obtain settings for. + */ + public SpacingBuilder(@NotNull CodeStyleSettings codeStyleSettings, @NotNull Language language) { + myCodeStyleSettings = codeStyleSettings.getCommonSettings(language); + } + + /** + * Creates SpacingBuilder with given language code style settings. + * @param languageCodeStyleSettings The language code style settings. Note that getLanguage() method must not + * return null! + */ + public SpacingBuilder(@NotNull CommonCodeStyleSettings languageCodeStyleSettings) { + assert languageCodeStyleSettings.getLanguage() != null : "Only language code style settings are accepted (getLanguage() != null)"; + myCodeStyleSettings = languageCodeStyleSettings; + } + public RuleBuilder after(IElementType elementType) { return new RuleBuilder(new RuleCondition(null, TokenSet.create(elementType), null)); }