From 49ea461652ba62224cab46b59c77a97f972e728c Mon Sep 17 00:00:00 2001 From: Eugene Kudelevsky Date: Fri, 25 Oct 2013 16:29:44 +0400 Subject: [PATCH] IDEA-103320 Android/XML code style: add "Insert line break after last attribute" option --- .../src/com/intellij/psi/formatter/xml/HtmlPolicy.java | 5 +++++ .../com/intellij/psi/formatter/xml/SyntheticBlock.java | 10 ++++++++++ .../psi/formatter/xml/XmlFormattingPolicy.java | 2 ++ .../src/com/intellij/psi/formatter/xml/XmlPolicy.java | 5 +++++ 4 files changed, 22 insertions(+) diff --git a/xml/impl/src/com/intellij/psi/formatter/xml/HtmlPolicy.java b/xml/impl/src/com/intellij/psi/formatter/xml/HtmlPolicy.java index 536575dfac72..ee25b3f67752 100644 --- a/xml/impl/src/com/intellij/psi/formatter/xml/HtmlPolicy.java +++ b/xml/impl/src/com/intellij/psi/formatter/xml/HtmlPolicy.java @@ -93,6 +93,11 @@ public class HtmlPolicy extends XmlFormattingPolicy { return false; } + @Override + public boolean insertLineBreakAfterLastAttribute(XmlAttribute attribute) { + return false; + } + @Override public boolean insertLineBreakAfterTagBegin(XmlTag tag) { return false; diff --git a/xml/impl/src/com/intellij/psi/formatter/xml/SyntheticBlock.java b/xml/impl/src/com/intellij/psi/formatter/xml/SyntheticBlock.java index 33e06e31f5b9..10a20674bb89 100644 --- a/xml/impl/src/com/intellij/psi/formatter/xml/SyntheticBlock.java +++ b/xml/impl/src/com/intellij/psi/formatter/xml/SyntheticBlock.java @@ -96,6 +96,16 @@ public class SyntheticBlock extends AbstractSyntheticBlock implements Block, Rea return Spacing.createSafeSpacing(myXmlFormattingPolicy.getShouldKeepLineBreaks(), myXmlFormattingPolicy.getKeepBlankLines()); } + if (type1 == XmlElementType.XML_ATTRIBUTE && (type2 == XmlTokenType.XML_TAG_END || type2 == XmlTokenType.XML_EMPTY_ELEMENT_END)) { + final PsiElement psi1 = node1.getPsi(); + + if (psi1 instanceof XmlAttribute && myXmlFormattingPolicy.insertLineBreakAfterLastAttribute((XmlAttribute)psi1)) { + return Spacing.createSpacing(0, 0, 1, + myXmlFormattingPolicy.getShouldKeepLineBreaks(), + myXmlFormattingPolicy.getKeepBlankLines()); + } + } + if (type2 == XmlElementType.XML_EMPTY_ELEMENT_END && myXmlFormattingPolicy.addSpaceIntoEmptyTag()) { return Spacing.createSpacing(1, 1, 0, myXmlFormattingPolicy.getShouldKeepLineBreaks(), diff --git a/xml/impl/src/com/intellij/psi/formatter/xml/XmlFormattingPolicy.java b/xml/impl/src/com/intellij/psi/formatter/xml/XmlFormattingPolicy.java index ae6fb0be8114..4521f840030d 100644 --- a/xml/impl/src/com/intellij/psi/formatter/xml/XmlFormattingPolicy.java +++ b/xml/impl/src/com/intellij/psi/formatter/xml/XmlFormattingPolicy.java @@ -90,6 +90,8 @@ public abstract class XmlFormattingPolicy { public abstract boolean insertLineBreakBeforeFirstAttribute(XmlAttribute attribute); + public abstract boolean insertLineBreakAfterLastAttribute(XmlAttribute attribute); + public abstract boolean insertLineBreakAfterTagBegin(XmlTag tag); public abstract boolean removeLineBreakBeforeTag(XmlTag xmlTag); diff --git a/xml/impl/src/com/intellij/psi/formatter/xml/XmlPolicy.java b/xml/impl/src/com/intellij/psi/formatter/xml/XmlPolicy.java index 40bb6abce287..22616aca2bbe 100644 --- a/xml/impl/src/com/intellij/psi/formatter/xml/XmlPolicy.java +++ b/xml/impl/src/com/intellij/psi/formatter/xml/XmlPolicy.java @@ -48,6 +48,11 @@ public class XmlPolicy extends XmlFormattingPolicy{ return false; } + @Override + public boolean insertLineBreakAfterLastAttribute(XmlAttribute attribute) { + return false; + } + @Override public boolean insertLineBreakAfterTagBegin(XmlTag tag) { return false;