@@ -12,17 +12,20 @@ import org.jetbrains.kotlin.idea.util.findAnnotation
1212import org.jetbrains.kotlin.name.FqName
1313import org.jetbrains.kotlin.psi.KtAnnotated
1414import org.jetbrains.kotlin.psi.KtCallExpression
15+ import org.jetbrains.kotlin.psi.KtDotQualifiedExpression
1516import org.jetbrains.kotlin.psi.KtLabelReferenceExpression
1617import org.jetbrains.kotlin.psi.KtSimpleNameExpression
1718import org.jetbrains.kotlin.psi.KtSuperExpression
1819import org.jetbrains.kotlin.psi.KtThisExpression
1920import org.jetbrains.kotlin.psi.KtTreeVisitorVoid
2021import org.jetbrains.kotlin.psi.ValueArgument
22+ import org.jetbrains.kotlin.psi.psiUtil.allChildren
2123import org.jetbrains.uast.UExpression
2224import org.jetbrains.uast.toUElementOfType
2325
2426val PRETTY_FQNAME = FqName (" io.github.kyay10.prettifykotlin.Pretty" )
2527val PREFIX_FQNAME = FqName (" io.github.kyay10.prettifykotlin.Prefix" )
28+ val POSTFIX_FQNAME = FqName (" io.github.kyay10.prettifykotlin.Postfix" )
2629
2730class PrettyFoldingBuilder : FoldingBuilderEx () {
2831 override fun buildFoldRegions (root : PsiElement , document : Document , quick : Boolean ): Array <FoldingDescriptor > =
@@ -60,6 +63,19 @@ class PrettyFoldingBuilder : FoldingBuilderEx() {
6063 add(PrettyFoldingDescriptor (leftPar, prefix, group, neverExpands = false ))
6164 add(PrettyFoldingDescriptor (rightPar, suffix, group, neverExpands = false ))
6265 }
66+
67+ override fun visitDotQualifiedExpression (expression : KtDotQualifiedExpression ) = impure {
68+ super .visitDotQualifiedExpression(expression)
69+ val selector = expression.selectorExpression
70+ ensure(selector is KtSimpleNameExpression )
71+ val reference = selector.mainReference.bind().resolve()
72+ ensure(reference is KtAnnotated )
73+
74+ val annotation = reference.findAnnotation(POSTFIX_FQNAME ).bind()
75+ val suffix = annotation.valueArguments.singleOrNull().bind().constValue
76+ ensure(suffix is String )
77+ add(PrettyFoldingDescriptor (expression.allChildren.first { it.text == " ." }, suffix))
78+ }
6379 })
6480 }.toTypedArray()
6581
0 commit comments