Skip to content

Commit e2fa4c9

Browse files
committed
Add Postfix
1 parent 4147e85 commit e2fa4c9

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
package io.github.kyay10.prettifykotlin
22

33
annotation class Pretty(val name: String)
4-
annotation class Prefix(val prefix: String, val postfix: String)
4+
annotation class Prefix(val prefix: String, val suffix: String)
5+
annotation class Postfix(val suffix: String)

src/main/kotlin/io/github/kyay10/prettifykotlin/PrettyFoldingBuilder.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,20 @@ import org.jetbrains.kotlin.idea.util.findAnnotation
1212
import org.jetbrains.kotlin.name.FqName
1313
import org.jetbrains.kotlin.psi.KtAnnotated
1414
import org.jetbrains.kotlin.psi.KtCallExpression
15+
import org.jetbrains.kotlin.psi.KtDotQualifiedExpression
1516
import org.jetbrains.kotlin.psi.KtLabelReferenceExpression
1617
import org.jetbrains.kotlin.psi.KtSimpleNameExpression
1718
import org.jetbrains.kotlin.psi.KtSuperExpression
1819
import org.jetbrains.kotlin.psi.KtThisExpression
1920
import org.jetbrains.kotlin.psi.KtTreeVisitorVoid
2021
import org.jetbrains.kotlin.psi.ValueArgument
22+
import org.jetbrains.kotlin.psi.psiUtil.allChildren
2123
import org.jetbrains.uast.UExpression
2224
import org.jetbrains.uast.toUElementOfType
2325

2426
val PRETTY_FQNAME = FqName("io.github.kyay10.prettifykotlin.Pretty")
2527
val PREFIX_FQNAME = FqName("io.github.kyay10.prettifykotlin.Prefix")
28+
val POSTFIX_FQNAME = FqName("io.github.kyay10.prettifykotlin.Postfix")
2629

2730
class 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

Comments
 (0)