diff options
Diffstat (limited to 'sd-plugin/src/main/java/org/intellij/sdk/language/SdFormattingModelBuilder.java')
-rw-r--r-- | sd-plugin/src/main/java/org/intellij/sdk/language/SdFormattingModelBuilder.java | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdFormattingModelBuilder.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdFormattingModelBuilder.java new file mode 100644 index 00000000000..35f57f65c26 --- /dev/null +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdFormattingModelBuilder.java @@ -0,0 +1,37 @@ +package org.intellij.sdk.language; + +import com.intellij.formatting.Alignment; +import com.intellij.formatting.FormattingContext; +import com.intellij.formatting.FormattingModel; +import com.intellij.formatting.FormattingModelBuilder; +import com.intellij.formatting.FormattingModelProvider; +import com.intellij.formatting.SpacingBuilder; +import com.intellij.formatting.Wrap; +import com.intellij.formatting.WrapType; +import com.intellij.psi.codeStyle.CodeStyleSettings; +import org.intellij.sdk.language.psi.SdTypes; +import org.jetbrains.annotations.NotNull; + +public class SdFormattingModelBuilder implements FormattingModelBuilder { + + private static SpacingBuilder createSpaceBuilder(CodeStyleSettings settings) { + return new SpacingBuilder(settings, SdLanguage.INSTANCE) + .around(SdTypes.SYMBOL) + .spaceIf(settings.getCommonSettings(SdLanguage.INSTANCE.getID()).SPACE_AFTER_COLON) + .before(SdTypes.DOCUMENT_FIELD_DEFINITION) + .none(); + } + + @Override + public @NotNull FormattingModel createModel(@NotNull FormattingContext formattingContext) { + final CodeStyleSettings codeStyleSettings = formattingContext.getCodeStyleSettings(); + return FormattingModelProvider + .createFormattingModelForPsiFile(formattingContext.getContainingFile(), + new SdBlock(formattingContext.getNode(), + Wrap.createWrap(WrapType.NONE, false), + Alignment.createAlignment(), + createSpaceBuilder(codeStyleSettings)), + codeStyleSettings); + } + +} |