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;