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 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
View File
@@ -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