From 5c0b677825d6d4d83190dceea52fc43ca9446bc9 Mon Sep 17 00:00:00 2001 From: Exidex <16986685+Exidex@users.noreply.github.com> Date: Wed, 12 Oct 2022 20:50:25 +0200 Subject: [PATCH] Add basic spacing rules for formatter --- .../dev/kdl/lang/formatter/KdlFormattingModelBuilder.kt | 8 ++++++-- .../kotlin/dev/kdl/lang/formatter/KdlFormatterTest.kt | 5 +++++ src/test/testData/formatter/afterNodeName.kdl | 3 +++ src/test/testData/formatter/afterNodeName_after.kdl | 3 +++ src/test/testData/formatter/aroundPropEq.kdl | 3 +++ src/test/testData/formatter/aroundPropEq_after.kdl | 3 +++ src/test/testData/formatter/beforeChildrenBlock.kdl | 3 +++ src/test/testData/formatter/beforeChildrenBlock_after.kdl | 3 +++ src/test/testData/formatter/betweenTypeAndLiteral.kdl | 3 +++ .../testData/formatter/betweenTypeAndLiteral_after.kdl | 3 +++ src/test/testData/formatter/insideType.kdl | 3 +++ src/test/testData/formatter/insideType_after.kdl | 3 +++ 12 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 src/test/testData/formatter/afterNodeName.kdl create mode 100644 src/test/testData/formatter/afterNodeName_after.kdl create mode 100644 src/test/testData/formatter/aroundPropEq.kdl create mode 100644 src/test/testData/formatter/aroundPropEq_after.kdl create mode 100644 src/test/testData/formatter/beforeChildrenBlock.kdl create mode 100644 src/test/testData/formatter/beforeChildrenBlock_after.kdl create mode 100644 src/test/testData/formatter/betweenTypeAndLiteral.kdl create mode 100644 src/test/testData/formatter/betweenTypeAndLiteral_after.kdl create mode 100644 src/test/testData/formatter/insideType.kdl create mode 100644 src/test/testData/formatter/insideType_after.kdl diff --git a/src/main/kotlin/dev/kdl/lang/formatter/KdlFormattingModelBuilder.kt b/src/main/kotlin/dev/kdl/lang/formatter/KdlFormattingModelBuilder.kt index d506e81..1d4caad 100644 --- a/src/main/kotlin/dev/kdl/lang/formatter/KdlFormattingModelBuilder.kt +++ b/src/main/kotlin/dev/kdl/lang/formatter/KdlFormattingModelBuilder.kt @@ -3,7 +3,7 @@ package dev.kdl.lang.formatter import com.intellij.formatting.* import com.intellij.psi.codeStyle.CodeStyleSettings import dev.kdl.lang.KdlLanguage -import dev.kdl.lang.psi.ext.KdlElementTypes.IDENTIFIER +import dev.kdl.lang.psi.ext.KdlElementTypes.* class KdlFormattingModelBuilder : FormattingModelBuilder { override fun createModel(formattingContext: FormattingContext): FormattingModel { @@ -22,6 +22,10 @@ class KdlFormattingModelBuilder : FormattingModelBuilder { private fun createSpaceBuilder(settings: CodeStyleSettings): SpacingBuilder { return SpacingBuilder(settings, KdlLanguage) - .after(IDENTIFIER).spaces(1) + .afterInside(IDENTIFIER, NODE_BLOCK).spaces(1) + .beforeInside(NODE_CHILDREN, NODE_BLOCK).spaces(1) + .betweenInside(TYPE, LITERAL, VALUE).none() + .withinPairInside(L_PAREN, R_PAREN, TYPE).none() + .aroundInside(EQ, PROP).none() } } \ No newline at end of file diff --git a/src/test/kotlin/dev/kdl/lang/formatter/KdlFormatterTest.kt b/src/test/kotlin/dev/kdl/lang/formatter/KdlFormatterTest.kt index a1aafee..427feb0 100644 --- a/src/test/kotlin/dev/kdl/lang/formatter/KdlFormatterTest.kt +++ b/src/test/kotlin/dev/kdl/lang/formatter/KdlFormatterTest.kt @@ -14,4 +14,9 @@ class KdlFormatterTest : FormatterTestCase() { fun test1() = doTest() fun test2() = doTest() + fun testAfterNodeName() = doTest() + fun testAroundPropEq() = doTest() + fun testBeforeChildrenBlock() = doTest() + fun testBetweenTypeAndLiteral() = doTest() + fun testInsideType() = doTest() } \ No newline at end of file diff --git a/src/test/testData/formatter/afterNodeName.kdl b/src/test/testData/formatter/afterNodeName.kdl new file mode 100644 index 0000000..a6fb469 --- /dev/null +++ b/src/test/testData/formatter/afterNodeName.kdl @@ -0,0 +1,3 @@ +node { + node{} +} \ No newline at end of file diff --git a/src/test/testData/formatter/afterNodeName_after.kdl b/src/test/testData/formatter/afterNodeName_after.kdl new file mode 100644 index 0000000..5fe12b9 --- /dev/null +++ b/src/test/testData/formatter/afterNodeName_after.kdl @@ -0,0 +1,3 @@ +node { + node {} +} \ No newline at end of file diff --git a/src/test/testData/formatter/aroundPropEq.kdl b/src/test/testData/formatter/aroundPropEq.kdl new file mode 100644 index 0000000..868c70a --- /dev/null +++ b/src/test/testData/formatter/aroundPropEq.kdl @@ -0,0 +1,3 @@ +node { + node prop = "val" +} \ No newline at end of file diff --git a/src/test/testData/formatter/aroundPropEq_after.kdl b/src/test/testData/formatter/aroundPropEq_after.kdl new file mode 100644 index 0000000..51d7fb9 --- /dev/null +++ b/src/test/testData/formatter/aroundPropEq_after.kdl @@ -0,0 +1,3 @@ +node { + node prop="val" +} \ No newline at end of file diff --git a/src/test/testData/formatter/beforeChildrenBlock.kdl b/src/test/testData/formatter/beforeChildrenBlock.kdl new file mode 100644 index 0000000..9aac5b9 --- /dev/null +++ b/src/test/testData/formatter/beforeChildrenBlock.kdl @@ -0,0 +1,3 @@ +node { + node "arg"{} +} \ No newline at end of file diff --git a/src/test/testData/formatter/beforeChildrenBlock_after.kdl b/src/test/testData/formatter/beforeChildrenBlock_after.kdl new file mode 100644 index 0000000..ac46282 --- /dev/null +++ b/src/test/testData/formatter/beforeChildrenBlock_after.kdl @@ -0,0 +1,3 @@ +node { + node "arg" {} +} \ No newline at end of file diff --git a/src/test/testData/formatter/betweenTypeAndLiteral.kdl b/src/test/testData/formatter/betweenTypeAndLiteral.kdl new file mode 100644 index 0000000..887fa5b --- /dev/null +++ b/src/test/testData/formatter/betweenTypeAndLiteral.kdl @@ -0,0 +1,3 @@ +node { + node (type) "arg" +} \ No newline at end of file diff --git a/src/test/testData/formatter/betweenTypeAndLiteral_after.kdl b/src/test/testData/formatter/betweenTypeAndLiteral_after.kdl new file mode 100644 index 0000000..8675f14 --- /dev/null +++ b/src/test/testData/formatter/betweenTypeAndLiteral_after.kdl @@ -0,0 +1,3 @@ +node { + node (type)"arg" +} \ No newline at end of file diff --git a/src/test/testData/formatter/insideType.kdl b/src/test/testData/formatter/insideType.kdl new file mode 100644 index 0000000..bd3b0f6 --- /dev/null +++ b/src/test/testData/formatter/insideType.kdl @@ -0,0 +1,3 @@ +node { + node ( type )"arg" +} \ No newline at end of file diff --git a/src/test/testData/formatter/insideType_after.kdl b/src/test/testData/formatter/insideType_after.kdl new file mode 100644 index 0000000..8675f14 --- /dev/null +++ b/src/test/testData/formatter/insideType_after.kdl @@ -0,0 +1,3 @@ +node { + node (type)"arg" +} \ No newline at end of file