Collapsed comments containing * get removed in the summary line (KT-21994)
#KT-21994 Fixed
This commit is contained in:
@@ -37,8 +37,10 @@ import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
|||||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||||
|
|
||||||
class KotlinFoldingBuilder : CustomFoldingBuilder(), DumbAware {
|
class KotlinFoldingBuilder : CustomFoldingBuilder(), DumbAware {
|
||||||
override fun buildLanguageFoldRegions(descriptors: MutableList<FoldingDescriptor>,
|
override fun buildLanguageFoldRegions(
|
||||||
root: PsiElement, document: Document, quick: Boolean) {
|
descriptors: MutableList<FoldingDescriptor>,
|
||||||
|
root: PsiElement, document: Document, quick: Boolean
|
||||||
|
) {
|
||||||
if (root !is KtFile) {
|
if (root !is KtFile) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -80,9 +82,9 @@ class KotlinFoldingBuilder : CustomFoldingBuilder(), DumbAware {
|
|||||||
val type = node.elementType
|
val type = node.elementType
|
||||||
val parentType = node.treeParent?.elementType
|
val parentType = node.treeParent?.elementType
|
||||||
return type == KtNodeTypes.FUNCTION_LITERAL ||
|
return type == KtNodeTypes.FUNCTION_LITERAL ||
|
||||||
(type == KtNodeTypes.BLOCK && parentType != KtNodeTypes.FUNCTION_LITERAL) ||
|
(type == KtNodeTypes.BLOCK && parentType != KtNodeTypes.FUNCTION_LITERAL) ||
|
||||||
type == KtNodeTypes.CLASS_BODY || type == KtTokens.BLOCK_COMMENT || type == KDocTokens.KDOC ||
|
type == KtNodeTypes.CLASS_BODY || type == KtTokens.BLOCK_COMMENT || type == KDocTokens.KDOC ||
|
||||||
type == KtNodeTypes.STRING_TEMPLATE || type == KtNodeTypes.PRIMARY_CONSTRUCTOR
|
type == KtNodeTypes.STRING_TEMPLATE || type == KtNodeTypes.PRIMARY_CONSTRUCTOR
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getRangeToFold(node: ASTNode): TextRange {
|
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.STRING_TEMPLATE -> "\"\"\"${getTrimmedFirstLineOfString(node).addSpaceIfNeeded()}...\"\"\""
|
||||||
node.elementType == KtNodeTypes.PRIMARY_CONSTRUCTOR -> "(...)"
|
node.elementType == KtNodeTypes.PRIMARY_CONSTRUCTOR -> "(...)"
|
||||||
node.psi is KtImportList -> "..."
|
node.psi is KtImportList -> "..."
|
||||||
else -> "{...}"
|
else -> "{...}"
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getTrimmedFirstLineOfString(node: ASTNode): String {
|
private fun getTrimmedFirstLineOfString(node: ASTNode): String {
|
||||||
@@ -126,11 +128,11 @@ class KotlinFoldingBuilder : CustomFoldingBuilder(), DumbAware {
|
|||||||
|
|
||||||
private fun getCommentContents(line: String): String {
|
private fun getCommentContents(line: String): String {
|
||||||
return line.trim()
|
return line.trim()
|
||||||
.replace("/**", "")
|
.removePrefix("/**")
|
||||||
.replace("/*", "")
|
.removePrefix("/*")
|
||||||
.replace("*/", "")
|
.removePrefix("*/")
|
||||||
.replace("*", "")
|
.removePrefix("*")
|
||||||
.trim()
|
.trim()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun isRegionCollapsedByDefault(node: ASTNode): Boolean {
|
override fun isRegionCollapsedByDefault(node: ASTNode): Boolean {
|
||||||
@@ -150,8 +152,7 @@ class KotlinFoldingBuilder : CustomFoldingBuilder(), DumbAware {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun isCustomFoldingRoot(node: ASTNode)
|
override fun isCustomFoldingRoot(node: ASTNode) = node.elementType == KtNodeTypes.BLOCK || node.elementType == KtNodeTypes.CLASS_BODY
|
||||||
= node.elementType == KtNodeTypes.BLOCK || node.elementType == KtNodeTypes.CLASS_BODY
|
|
||||||
|
|
||||||
private fun isFirstElementInFile(element: PsiElement): Boolean {
|
private fun isFirstElementInFile(element: PsiElement): Boolean {
|
||||||
val parent = element.parent
|
val parent = element.parent
|
||||||
|
|||||||
+2
-2
@@ -3,8 +3,8 @@
|
|||||||
*/</fold>
|
*/</fold>
|
||||||
package some
|
package some
|
||||||
|
|
||||||
<fold text='/** Other ...*/' expand='true'>/**
|
<fold text='/** Other 1 * 2 ...*/' expand='true'>/**
|
||||||
* Other
|
* Other 1 * 2
|
||||||
*/</fold>
|
*/</fold>
|
||||||
|
|
||||||
// SET_TRUE: setCollapseFileHeader
|
// SET_TRUE: setCollapseFileHeader
|
||||||
|
|||||||
Reference in New Issue
Block a user