summaryrefslogtreecommitdiff
path: root/java/java-impl/src/com/intellij/psi/formatter/java/wrap/impl/JavaChildWrapArranger.java
diff options
context:
space:
mode:
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.java26
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();