mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-55306 Align when multiline for parenthesized expressions works weirdly for anonymous classes as parameters
Dedicated formatting option for multiline method brackets alignment is introduced. 'Align multiline parenthesized expressions' used before that but it caused wierd formatting at some use-cases.
This commit is contained in:
@@ -953,7 +953,14 @@ public abstract class AbstractJavaBlock extends AbstractBlock implements JavaBlo
|
||||
AlignmentStrategy alignmentStrategy = AlignmentStrategy.wrap(createAlignment(doAlign, null), ElementType.COMMA);
|
||||
setChildIndent(internalIndent);
|
||||
setChildAlignment(alignmentStrategy.getAlignment(null));
|
||||
Alignment bracketAlignment = mySettings.ALIGN_MULTILINE_PARENTHESIZED_EXPRESSION ? Alignment.createAlignment() : null;
|
||||
boolean methodParametersBlock = true;
|
||||
ASTNode lBracketParent = child.getTreeParent();
|
||||
if (lBracketParent != null) {
|
||||
ASTNode methodCandidate = lBracketParent.getTreeParent();
|
||||
methodParametersBlock = methodCandidate != null && (methodCandidate.getElementType() == JavaElementType.METHOD
|
||||
|| methodCandidate.getElementType() == JavaElementType.METHOD_CALL_EXPRESSION);
|
||||
}
|
||||
Alignment bracketAlignment = methodParametersBlock && mySettings.ALIGN_MULTILINE_METHOD_BRACKETS ? Alignment.createAlignment() : null;
|
||||
|
||||
boolean isAfterIncomplete = false;
|
||||
|
||||
|
||||
@@ -3,6 +3,6 @@ class Foo {
|
||||
public void foo() {
|
||||
int someVariable = (y +
|
||||
z
|
||||
);
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,7 @@ public class Foo {
|
||||
if (x < 0) {
|
||||
int someVariable = (y +
|
||||
z
|
||||
);
|
||||
);
|
||||
someVariable = x =
|
||||
x +
|
||||
y;
|
||||
|
||||
+13
-1
@@ -109,7 +109,8 @@ public class JavaFormatterAlignmentTest extends AbstractJavaFormatterTest {
|
||||
|
||||
public void testMethodBrackets() throws Exception {
|
||||
// Inspired by IDEA-53013
|
||||
getSettings().ALIGN_MULTILINE_PARENTHESIZED_EXPRESSION = true;
|
||||
getSettings().ALIGN_MULTILINE_METHOD_BRACKETS = true;
|
||||
getSettings().ALIGN_MULTILINE_PARENTHESIZED_EXPRESSION = false;
|
||||
getSettings().ALIGN_MULTILINE_PARAMETERS = true;
|
||||
getSettings().ALIGN_MULTILINE_PARAMETERS_IN_CALLS = true;
|
||||
getSettings().CALL_PARAMETERS_RPAREN_ON_NEXT_LINE = true;
|
||||
@@ -136,6 +137,17 @@ public class JavaFormatterAlignmentTest extends AbstractJavaFormatterTest {
|
||||
" );\n" +
|
||||
"}"
|
||||
);
|
||||
|
||||
// Inspired by IDEA-55306
|
||||
getSettings().ALIGN_MULTILINE_METHOD_BRACKETS = false;
|
||||
getSettings().CALL_PARAMETERS_RPAREN_ON_NEXT_LINE = false;
|
||||
String method =
|
||||
"executeCommand(new Command<Boolean>() {\n" +
|
||||
" public Boolean run() throws ExecutionException {\n" +
|
||||
" return doInterrupt();\n" +
|
||||
" }\n" +
|
||||
"});";
|
||||
doMethodTest(method, method);
|
||||
}
|
||||
|
||||
public void testVariableDeclarationAlignment() {
|
||||
|
||||
@@ -426,6 +426,7 @@ public class CodeStyleSettings implements Cloneable, JDOMExternalizable {
|
||||
public boolean ALIGN_MULTILINE_THROWS_LIST = false;
|
||||
|
||||
public boolean ALIGN_MULTILINE_EXTENDS_LIST = false;
|
||||
public boolean ALIGN_MULTILINE_METHOD_BRACKETS = false;
|
||||
public boolean ALIGN_MULTILINE_PARENTHESIZED_EXPRESSION = false;
|
||||
public boolean ALIGN_MULTILINE_ARRAY_INITIALIZER_EXPRESSION = false;
|
||||
|
||||
|
||||
+7
@@ -73,6 +73,7 @@ public class CodeStyleIndentAndBracesPanel extends MultilanguageCodeStyleAbstrac
|
||||
private JCheckBox myAlignChainedMethods;
|
||||
private JCheckBox myAlignDeclarationParameters;
|
||||
private JCheckBox myAlignCallParameters;
|
||||
private JCheckBox myAlignMethodBrackets;
|
||||
private JCheckBox myAlignExtendsList;
|
||||
private JCheckBox myAlignForStatement;
|
||||
private JCheckBox myAlignThrowsList;
|
||||
@@ -206,6 +207,9 @@ public class CodeStyleIndentAndBracesPanel extends MultilanguageCodeStyleAbstrac
|
||||
myAlignCallParameters = createCheckBox(ApplicationBundle.message("checkbox.align.multiline.call.arguments"));
|
||||
optionGroup.add(myAlignCallParameters);
|
||||
|
||||
myAlignMethodBrackets = createCheckBox(ApplicationBundle.message("checkbox.align.multiline.method.brackets"));
|
||||
optionGroup.add(myAlignMethodBrackets);
|
||||
|
||||
myAlignExtendsList = createCheckBox(ApplicationBundle.message("checkbox.align.multiline.extends.list"));
|
||||
optionGroup.add(myAlignExtendsList);
|
||||
|
||||
@@ -325,6 +329,7 @@ public class CodeStyleIndentAndBracesPanel extends MultilanguageCodeStyleAbstrac
|
||||
isModified |= isModified(myAlignAssignment, settings.ALIGN_MULTILINE_ASSIGNMENT);
|
||||
isModified |= isModified(myAlignBinaryExpression, settings.ALIGN_MULTILINE_BINARY_OPERATION);
|
||||
isModified |= isModified(myAlignCallParameters, settings.ALIGN_MULTILINE_PARAMETERS_IN_CALLS);
|
||||
isModified |= isModified(myAlignMethodBrackets, settings.ALIGN_MULTILINE_METHOD_BRACKETS);
|
||||
isModified |= isModified(myAlignDeclarationParameters, settings.ALIGN_MULTILINE_PARAMETERS);
|
||||
isModified |= isModified(myAlignExtendsList, settings.ALIGN_MULTILINE_EXTENDS_LIST);
|
||||
isModified |= isModified(myAlignForStatement, settings.ALIGN_MULTILINE_FOR);
|
||||
@@ -370,6 +375,7 @@ public class CodeStyleIndentAndBracesPanel extends MultilanguageCodeStyleAbstrac
|
||||
myAlignAssignment.setSelected(settings.ALIGN_MULTILINE_ASSIGNMENT);
|
||||
myAlignBinaryExpression.setSelected(settings.ALIGN_MULTILINE_BINARY_OPERATION);
|
||||
myAlignCallParameters.setSelected(settings.ALIGN_MULTILINE_PARAMETERS_IN_CALLS);
|
||||
myAlignMethodBrackets.setSelected(settings.ALIGN_MULTILINE_METHOD_BRACKETS);
|
||||
myAlignChainedMethods.setSelected(settings.ALIGN_MULTILINE_CHAINED_METHODS);
|
||||
myAlignDeclarationParameters.setSelected(settings.ALIGN_MULTILINE_PARAMETERS);
|
||||
myAlignExtendsList.setSelected(settings.ALIGN_MULTILINE_EXTENDS_LIST);
|
||||
@@ -410,6 +416,7 @@ public class CodeStyleIndentAndBracesPanel extends MultilanguageCodeStyleAbstrac
|
||||
settings.ALIGN_MULTILINE_ASSIGNMENT = myAlignAssignment.isSelected();
|
||||
settings.ALIGN_MULTILINE_BINARY_OPERATION = myAlignBinaryExpression.isSelected();
|
||||
settings.ALIGN_MULTILINE_PARAMETERS_IN_CALLS = myAlignCallParameters.isSelected();
|
||||
settings.ALIGN_MULTILINE_METHOD_BRACKETS = myAlignMethodBrackets.isSelected();
|
||||
settings.ALIGN_MULTILINE_CHAINED_METHODS = myAlignChainedMethods.isSelected();
|
||||
settings.ALIGN_MULTILINE_PARAMETERS = myAlignDeclarationParameters.isSelected();
|
||||
settings.ALIGN_MULTILINE_EXTENDS_LIST = myAlignExtendsList.isSelected();
|
||||
|
||||
@@ -144,6 +144,7 @@ title.align.when.multiline=Align When Multiline
|
||||
checkbox.align.multiline.chained.methods=Chained methods
|
||||
checkbox.align.multiline.method.parameters=Method parameters
|
||||
checkbox.align.multiline.call.arguments=Call arguments
|
||||
checkbox.align.multiline.method.brackets=Method brackets
|
||||
checkbox.align.multiline.extends.list=Extends list
|
||||
checkbox.align.multiline.throws.list=Throws list
|
||||
checkbox.align.multiline.fields.variables.groups=Fields/variables groups
|
||||
|
||||
Reference in New Issue
Block a user