Don't move line and /**/ comments during reformat (KT-18805)
#KT-18805 Fixed
This commit is contained in:
@@ -58,7 +58,36 @@ fun createSpacingBuilder(settings: CodeStyleSettings, builderUtil: KotlinSpacing
|
||||
val DECLARATIONS =
|
||||
TokenSet.create(PROPERTY, FUN, CLASS, OBJECT_DECLARATION, ENUM_ENTRY, SECONDARY_CONSTRUCTOR, CLASS_INITIALIZER)
|
||||
|
||||
simple {
|
||||
before(FILE_ANNOTATION_LIST).lineBreakInCode()
|
||||
after(FILE_ANNOTATION_LIST).blankLines(1)
|
||||
|
||||
after(PACKAGE_DIRECTIVE).blankLines(1)
|
||||
between(IMPORT_DIRECTIVE, IMPORT_DIRECTIVE).lineBreakInCode()
|
||||
after(IMPORT_LIST).blankLines(1)
|
||||
}
|
||||
|
||||
custom {
|
||||
fun commentSpacing(minSpaces: Int): Spacing {
|
||||
if (commonCodeStyleSettings.KEEP_FIRST_COLUMN_COMMENT) {
|
||||
return Spacing.createKeepingFirstColumnSpacing(minSpaces, Int.MAX_VALUE, settings.KEEP_LINE_BREAKS, commonCodeStyleSettings.KEEP_BLANK_LINES_IN_CODE)
|
||||
}
|
||||
return Spacing.createSpacing(minSpaces, Int.MAX_VALUE, 0, settings.KEEP_LINE_BREAKS, commonCodeStyleSettings.KEEP_BLANK_LINES_IN_CODE)
|
||||
}
|
||||
|
||||
// Several line comments happened to be generated in one line
|
||||
inPosition(parent = null, left = EOL_COMMENT, right = EOL_COMMENT).customRule { _, _, right ->
|
||||
val nodeBeforeRight = right.node.treePrev
|
||||
if (nodeBeforeRight is PsiWhiteSpace && !nodeBeforeRight.textContains('\n')) {
|
||||
createSpacing(0, minLineFeeds = 1)
|
||||
}
|
||||
else {
|
||||
null
|
||||
}
|
||||
}
|
||||
inPosition(right = BLOCK_COMMENT).spacing(commentSpacing(0))
|
||||
inPosition(right = EOL_COMMENT).spacing(commentSpacing(1))
|
||||
|
||||
inPosition(left = CLASS, right = CLASS).emptyLinesIfLineBreakInLeft(1)
|
||||
inPosition(left = CLASS, right = OBJECT_DECLARATION).emptyLinesIfLineBreakInLeft(1)
|
||||
inPosition(left = OBJECT_DECLARATION, right = OBJECT_DECLARATION).emptyLinesIfLineBreakInLeft(1)
|
||||
@@ -78,7 +107,8 @@ fun createSpacingBuilder(settings: CodeStyleSettings, builderUtil: KotlinSpacing
|
||||
val klass = parent.node.treeParent.psi as? KtClass ?: return@customRule null
|
||||
if (klass.isEnum() && right.node.elementType in DECLARATIONS) {
|
||||
createSpacing(0, minLineFeeds = 2, keepBlankLines = settings.KEEP_BLANK_LINES_IN_DECLARATIONS)
|
||||
} else null
|
||||
}
|
||||
else null
|
||||
}
|
||||
|
||||
inPosition(parent = CLASS_BODY, left = LBRACE).customRule { parent, left, right ->
|
||||
@@ -114,13 +144,6 @@ fun createSpacingBuilder(settings: CodeStyleSettings, builderUtil: KotlinSpacing
|
||||
|
||||
simple {
|
||||
// ============ Line breaks ==============
|
||||
before(FILE_ANNOTATION_LIST).lineBreakInCode()
|
||||
after(FILE_ANNOTATION_LIST).blankLines(1)
|
||||
|
||||
after(PACKAGE_DIRECTIVE).blankLines(1)
|
||||
between(IMPORT_DIRECTIVE, IMPORT_DIRECTIVE).lineBreakInCode()
|
||||
after(IMPORT_LIST).blankLines(1)
|
||||
|
||||
before(DOC_COMMENT).lineBreakInCode()
|
||||
between(PROPERTY, PROPERTY).lineBreakInCode()
|
||||
|
||||
@@ -343,22 +366,6 @@ fun createSpacingBuilder(settings: CodeStyleSettings, builderUtil: KotlinSpacing
|
||||
spacingForLeftBrace(right.node!!.firstChildNode)
|
||||
}
|
||||
|
||||
if (kotlinCommonSettings.KEEP_FIRST_COLUMN_COMMENT) {
|
||||
inPosition(parent = null, left = EOL_COMMENT, right = EOL_COMMENT).customRule { _, _, right ->
|
||||
val nodeBeforeRight = right.node.treePrev
|
||||
if (nodeBeforeRight is PsiWhiteSpace && !nodeBeforeRight.textContains('\n')) {
|
||||
// Several line comments happened to be generated in one line
|
||||
createSpacing(0, minLineFeeds = 1)
|
||||
}
|
||||
else {
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
inPosition(rightSet = TokenSet.create(EOL_COMMENT, BLOCK_COMMENT)).spacing(
|
||||
Spacing.createKeepingFirstColumnSpacing(0, Integer.MAX_VALUE, settings.KEEP_LINE_BREAKS, kotlinCommonSettings.KEEP_BLANK_LINES_IN_CODE))
|
||||
}
|
||||
|
||||
// Add space after a semicolon if there is another child at the same line
|
||||
inPosition(left = SEMICOLON).customRule { _, left, _ ->
|
||||
val nodeAfterLeft = left.node.treeNext
|
||||
|
||||
Reference in New Issue
Block a user