Option to wrap elvis expressions
#KT-21720 Fixed
This commit is contained in:
+1
@@ -47,6 +47,7 @@ public class KotlinCodeStyleSettings extends CustomCodeStyleSettings {
|
||||
public boolean CONTINUATION_INDENT_IN_SUPERTYPE_LISTS = true;
|
||||
public int BLANK_LINES_AROUND_BLOCK_WHEN_BRANCHES = 0;
|
||||
public int WRAP_EXPRESSION_BODY_FUNCTIONS = 0;
|
||||
public int WRAP_ELVIS_EXPRESSIONS = 1;
|
||||
|
||||
public KotlinCodeStyleSettings(CodeStyleSettings container) {
|
||||
super("JetCodeStyleSettings", container);
|
||||
|
||||
@@ -439,6 +439,16 @@ abstract class KotlinCommonBlock(
|
||||
}
|
||||
}
|
||||
}
|
||||
if (nodePsi.operationToken == KtTokens.ELVIS) {
|
||||
return object : WrappingStrategy {
|
||||
override fun getWrap(childElement: ASTNode): Wrap? {
|
||||
if (childElement.elementType == KtNodeTypes.OPERATION_REFERENCE) {
|
||||
return Wrap.createWrap(settings.kotlinCustomSettings.WRAP_ELVIS_EXPRESSIONS, true)
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
||||
}
|
||||
return WrappingStrategy.NoWrapping
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,6 +50,9 @@ fun SpacingBuilder.afterInside(element: IElementType, tokenSet: TokenSet, spacin
|
||||
tokenSet.types.forEach { inType -> afterInside(element, inType).spacingFun() }
|
||||
}
|
||||
|
||||
fun SpacingBuilder.RuleBuilder.spacesNoLineBreak(spaces: Int) =
|
||||
spacing(spaces, spaces, 0, false, 0)
|
||||
|
||||
fun createSpacingBuilder(settings: CodeStyleSettings, builderUtil: KotlinSpacingBuilderUtil): KotlinSpacingBuilder {
|
||||
val kotlinCommonSettings = settings.kotlinCommonSettings
|
||||
val kotlinCustomSettings = settings.kotlinCustomSettings
|
||||
@@ -199,7 +202,7 @@ fun createSpacingBuilder(settings: CodeStyleSettings, builderUtil: KotlinSpacing
|
||||
|
||||
|
||||
val spacesAroundAssignment = if (kotlinCommonSettings.SPACE_AROUND_ASSIGNMENT_OPERATORS) 1 else 0
|
||||
beforeInside(EQ, PROPERTY).spacing(spacesAroundAssignment, spacesAroundAssignment, 0, false, 0)
|
||||
beforeInside(EQ, PROPERTY).spacesNoLineBreak(spacesAroundAssignment)
|
||||
beforeInside(EQ, FUN).spacing(spacesAroundAssignment, spacesAroundAssignment, 0, false, 0)
|
||||
|
||||
around(TokenSet.create(EQ, MULTEQ, DIVEQ, PLUSEQ, MINUSEQ, PERCEQ)).spaceIf(kotlinCommonSettings.SPACE_AROUND_ASSIGNMENT_OPERATORS)
|
||||
@@ -209,7 +212,8 @@ fun createSpacingBuilder(settings: CodeStyleSettings, builderUtil: KotlinSpacing
|
||||
aroundInside(TokenSet.create(PLUS, MINUS), BINARY_EXPRESSION).spaceIf(kotlinCommonSettings.SPACE_AROUND_ADDITIVE_OPERATORS)
|
||||
aroundInside(TokenSet.create(MUL, DIV, PERC), BINARY_EXPRESSION).spaceIf(kotlinCommonSettings.SPACE_AROUND_MULTIPLICATIVE_OPERATORS)
|
||||
around(TokenSet.create(PLUSPLUS, MINUSMINUS, EXCLEXCL, MINUS, PLUS, EXCL)).spaceIf(kotlinCommonSettings.SPACE_AROUND_UNARY_OPERATOR)
|
||||
around(ELVIS).spaces(1)
|
||||
before(ELVIS).spaces(1)
|
||||
after(ELVIS).spacesNoLineBreak(1)
|
||||
around(RANGE).spaceIf(kotlinCustomSettings.SPACE_AROUND_RANGE)
|
||||
|
||||
after(MODIFIER_LIST).spaces(1)
|
||||
|
||||
Reference in New Issue
Block a user