diff options
author | Tor Norbye <tnorbye@google.com> | 2014-09-18 13:38:58 -0700 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2014-09-18 13:38:58 -0700 |
commit | b5fb31ef6a38f19404859755dbd2e345215b97bf (patch) | |
tree | e8787c45e494dfcc558faf0f75956f8785c39b94 /java/java-impl/src/com/intellij/psi/formatter/java/wrap/impl/JavaChildWrapArranger.java | |
parent | e222a9e1e66670a56e926a6b0f3e10231eeeb1fb (diff) | |
parent | e782c57d74000722f9db4c9426317410520670c6 (diff) | |
download | idea-b5fb31ef6a38f19404859755dbd2e345215b97bf.tar.gz |
Merge remote-tracking branch 'aosp/upstream-master' into merge
Conflicts:
.idea/libraries/asm_tools.xml
.idea/libraries/bouncy_castle.xml
.idea/libraries/builder_model.xml
.idea/libraries/commons_compress.xml
.idea/libraries/easymock_tools.xml
.idea/libraries/freemarker_2_3_20.xml
.idea/libraries/guava_tools.xml
.idea/libraries/kxml2.xml
.idea/libraries/lombok_ast.xml
.idea/libraries/mockito.xml
.idea/modules.xml
.idea/vcs.xml
build/scripts/layouts.gant
updater/src/com/intellij/updater/Runner.java
Change-Id: I8e1c173e00cd76c855b8a98543b0a0edfdd99d12
Diffstat (limited to 'java/java-impl/src/com/intellij/psi/formatter/java/wrap/impl/JavaChildWrapArranger.java')
-rw-r--r-- | java/java-impl/src/com/intellij/psi/formatter/java/wrap/impl/JavaChildWrapArranger.java | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/java/java-impl/src/com/intellij/psi/formatter/java/wrap/impl/JavaChildWrapArranger.java b/java/java-impl/src/com/intellij/psi/formatter/java/wrap/impl/JavaChildWrapArranger.java index 954f03248b9c..5b05ced2d5a1 100644 --- a/java/java-impl/src/com/intellij/psi/formatter/java/wrap/impl/JavaChildWrapArranger.java +++ b/java/java-impl/src/com/intellij/psi/formatter/java/wrap/impl/JavaChildWrapArranger.java @@ -20,6 +20,7 @@ import com.intellij.formatting.WrapType; import com.intellij.lang.ASTNode; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CommonCodeStyleSettings; +import com.intellij.psi.codeStyle.JavaCodeStyleSettings; import com.intellij.psi.formatter.FormatterUtil; import com.intellij.psi.formatter.java.JavaFormatterUtil; import com.intellij.psi.formatter.java.wrap.JavaWrapManager; @@ -29,6 +30,7 @@ import com.intellij.psi.impl.source.tree.CompositeElement; import com.intellij.psi.impl.source.tree.JavaElementType; import com.intellij.psi.tree.IElementType; import com.intellij.util.ArrayUtil; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import static com.intellij.psi.formatter.java.JavaFormatterUtil.getWrapType; @@ -69,6 +71,7 @@ public class JavaChildWrapArranger { CommonCodeStyleSettings settings, Wrap suggestedWrap, ReservedWrapsProvider reservedWrapsProvider) { + final JavaCodeStyleSettings javaSettings = settings.getRootSettings().getCustomSettings(JavaCodeStyleSettings.class); ASTNode directParent = child.getTreeParent(); int role = ((CompositeElement)directParent).getChildRole(child); @@ -153,7 +156,7 @@ public class JavaChildWrapArranger { if (prev != null && prev.getElementType() == JavaElementType.MODIFIER_LIST) { ASTNode last = prev.getLastChildNode(); if (last != null && last.getElementType() == JavaElementType.ANNOTATION) { - if (isTypeAnnotation(last.getPsi())) { + if (isTypeAnnotation(last.getPsi()) || javaSettings.DO_NOT_WRAP_AFTER_SINGLE_ANNOTATION && isFieldModifierListWithSingleAnnotation(prev)) { return Wrap.createWrap(WrapType.NONE, false); } else { @@ -182,6 +185,10 @@ public class JavaChildWrapArranger { ASTNode prev = FormatterUtil.getPreviousNonWhitespaceSibling(child); if (prev != null && prev.getElementType() == JavaElementType.ANNOTATION) { + if (javaSettings.DO_NOT_WRAP_AFTER_SINGLE_ANNOTATION && isFieldModifierListWithSingleAnnotation(parent)) { + return Wrap.createWrap(WrapType.NONE, false); + } + return Wrap.createWrap(getWrapType(getAnnotationWrapType(parent.getTreeParent(), child, settings)), true); } @@ -256,6 +263,23 @@ public class JavaChildWrapArranger { return suggestedWrap; } + private static boolean isFieldModifierListWithSingleAnnotation(@NotNull ASTNode elem) { + ASTNode parent = elem.getTreeParent(); + if (parent != null && parent.getElementType() == JavaElementType.FIELD) { + return isModifierListWithSingleAnnotation(elem); + } + return false; + } + + private static boolean isModifierListWithSingleAnnotation(@NotNull ASTNode elem) { + if (elem.getPsi() instanceof PsiModifierList) { + if (((PsiModifierList)elem.getPsi()).getAnnotations().length == 1) { + return true; + } + } + return false; + } + private static int getAnnotationWrapType(ASTNode parent, ASTNode child, CommonCodeStyleSettings settings) { IElementType nodeType = parent.getElementType(); |