Collapsed comments containing * get removed in the summary line (KT-21994)

#KT-21994 Fixed
This commit is contained in:
Nikolay Krasko
2018-01-16 19:42:14 +03:00
parent a1b20535b2
commit 1c7e42f1d4
2 changed files with 16 additions and 15 deletions
@@ -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<FoldingDescriptor>,
root: PsiElement, document: Document, quick: Boolean) {
override fun buildLanguageFoldRegions(
descriptors: MutableList<FoldingDescriptor>,
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
+2 -2
View File
@@ -3,8 +3,8 @@
*/</fold>
package some
<fold text='/** Other ...*/' expand='true'>/**
* Other
<fold text='/** Other 1 * 2 ...*/' expand='true'>/**
* Other 1 * 2
*/</fold>
// SET_TRUE: setCollapseFileHeader