From 8ad0c1ac01e293314eafc1141e20ff8824bb6b21 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Mon, 14 Mar 2016 16:01:31 +0300 Subject: [PATCH] Force new line if the whitespace between comments doesn't have a line break Tweeking KEEP_FIRST_COLUMN_COMMENT setting and one-line comments generated on the same line. #KT-4175 In Progress --- .../kotlin/idea/formatter/kotlinSpacingRules.kt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/idea/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt b/idea/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt index 15bcd9ff18e..b10dd19385a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt +++ b/idea/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt @@ -21,6 +21,7 @@ import com.intellij.formatting.Spacing import com.intellij.formatting.SpacingBuilder import com.intellij.formatting.SpacingBuilder.RuleBuilder import com.intellij.lang.ASTNode +import com.intellij.psi.PsiWhiteSpace import com.intellij.psi.codeStyle.CodeStyleSettings import com.intellij.psi.formatter.FormatterUtil import com.intellij.psi.tree.IElementType @@ -289,6 +290,17 @@ fun createSpacingBuilder(settings: CodeStyleSettings): KotlinSpacingBuilder { } if (kotlinCommonSettings.KEEP_FIRST_COLUMN_COMMENT) { + inPosition(parent = null, left = EOL_COMMENT, right = EOL_COMMENT).customRule { parent, left, right -> + val nodeBeforeRight = right.node.treePrev + if (nodeBeforeRight is PsiWhiteSpace && !nodeBeforeRight.textContains('\n')) { + // Several line comments happened to be generated in one line + Spacing.createSpacing(1, 0, 1, settings.KEEP_LINE_BREAKS, settings.KEEP_BLANK_LINES_IN_CODE) + } + 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)) }