diff --git a/idea/src/org/jetbrains/kotlin/idea/KotlinFoldingBuilder.kt b/idea/src/org/jetbrains/kotlin/idea/KotlinFoldingBuilder.kt index 17d8a231407..c05fbe53427 100644 --- a/idea/src/org/jetbrains/kotlin/idea/KotlinFoldingBuilder.kt +++ b/idea/src/org/jetbrains/kotlin/idea/KotlinFoldingBuilder.kt @@ -37,8 +37,10 @@ import org.jetbrains.kotlin.psi.psiUtil.endOffset import org.jetbrains.kotlin.psi.psiUtil.startOffset class KotlinFoldingBuilder : CustomFoldingBuilder(), DumbAware { - override fun buildLanguageFoldRegions(descriptors: MutableList, - root: PsiElement, document: Document, quick: Boolean) { + override fun buildLanguageFoldRegions( + descriptors: MutableList, + root: PsiElement, document: Document, quick: Boolean + ) { if (root !is KtFile) { return } @@ -80,9 +82,9 @@ class KotlinFoldingBuilder : CustomFoldingBuilder(), DumbAware { val type = node.elementType val parentType = node.treeParent?.elementType return type == KtNodeTypes.FUNCTION_LITERAL || - (type == KtNodeTypes.BLOCK && parentType != KtNodeTypes.FUNCTION_LITERAL) || - type == KtNodeTypes.CLASS_BODY || type == KtTokens.BLOCK_COMMENT || type == KDocTokens.KDOC || - type == KtNodeTypes.STRING_TEMPLATE || type == KtNodeTypes.PRIMARY_CONSTRUCTOR + (type == KtNodeTypes.BLOCK && parentType != KtNodeTypes.FUNCTION_LITERAL) || + type == KtNodeTypes.CLASS_BODY || type == KtTokens.BLOCK_COMMENT || type == KDocTokens.KDOC || + type == KtNodeTypes.STRING_TEMPLATE || type == KtNodeTypes.PRIMARY_CONSTRUCTOR } private fun getRangeToFold(node: ASTNode): TextRange { @@ -103,7 +105,7 @@ class KotlinFoldingBuilder : CustomFoldingBuilder(), DumbAware { node.elementType == KtNodeTypes.STRING_TEMPLATE -> "\"\"\"${getTrimmedFirstLineOfString(node).addSpaceIfNeeded()}...\"\"\"" node.elementType == KtNodeTypes.PRIMARY_CONSTRUCTOR -> "(...)" node.psi is KtImportList -> "..." - else -> "{...}" + else -> "{...}" } private fun getTrimmedFirstLineOfString(node: ASTNode): String { @@ -126,11 +128,11 @@ class KotlinFoldingBuilder : CustomFoldingBuilder(), DumbAware { private fun getCommentContents(line: String): String { return line.trim() - .replace("/**", "") - .replace("/*", "") - .replace("*/", "") - .replace("*", "") - .trim() + .removePrefix("/**") + .removePrefix("/*") + .removePrefix("*/") + .removePrefix("*") + .trim() } override fun isRegionCollapsedByDefault(node: ASTNode): Boolean { @@ -150,8 +152,7 @@ class KotlinFoldingBuilder : CustomFoldingBuilder(), DumbAware { return false } - override fun isCustomFoldingRoot(node: ASTNode) - = node.elementType == KtNodeTypes.BLOCK || node.elementType == KtNodeTypes.CLASS_BODY + override fun isCustomFoldingRoot(node: ASTNode) = node.elementType == KtNodeTypes.BLOCK || node.elementType == KtNodeTypes.CLASS_BODY private fun isFirstElementInFile(element: PsiElement): Boolean { val parent = element.parent diff --git a/idea/testData/folding/checkCollapse/headerKDoc.kt b/idea/testData/folding/checkCollapse/headerKDoc.kt index c715e6471a9..27ebee835d3 100644 --- a/idea/testData/folding/checkCollapse/headerKDoc.kt +++ b/idea/testData/folding/checkCollapse/headerKDoc.kt @@ -3,8 +3,8 @@ */ package some -/** - * Other +/** + * Other 1 * 2 */ // SET_TRUE: setCollapseFileHeader