private void FormatXmlElementEndTag(XmlElementEndTagSyntax node, ElementFormatting formatting) { if (formatting.HasFlag(ElementFormatting.SnugEnd)) { Break(BreakMode.SuppressWordBreak); } else if (formatting.HasFlag(ElementFormatting.Block)) { Break(BreakMode.LineBreak); } // A snug-end element normally causes unindentation to happen after the end tag, but // there is a special case for when the content of a snug block element forced a line // break before the end tag (presumably because the content was a block element). // This makes a snug block element that contains a block element behave like a block // element. bool unsnug = formatting.HasFlag(ElementFormatting.Block | ElementFormatting.Snug) && _breakMode.HasFlag(BreakMode.LineBreak); bool unindentAfterTag = formatting.HasFlag(ElementFormatting.SnugEnd) && !unsnug; if (formatting.HasFlag(ElementFormatting.Indent) && !unindentAfterTag) { _interiorIndent -= _indentSize; } if (node.HasLeadingTrivia) { AddTrivia(node.GetLeadingTrivia()); } if (formatting.HasFlag(ElementFormatting.Preserve)) { _preserve -= 1; } FormatElementEndTag(node); if (node.HasTrailingTrivia) { AddTrivia(node.GetTrailingTrivia()); } if (formatting.HasFlag(ElementFormatting.Block)) { Break(BreakMode.LineBreak); } if (formatting.HasFlag(ElementFormatting.Indent) && unindentAfterTag) { _interiorIndent -= _indentSize; } }
private void FormatXmlElementStartTag(XmlElementStartTagSyntax node, ElementFormatting formatting) { if (formatting.HasFlag(ElementFormatting.Block)) { Break(BreakMode.LineBreak); } if (node.HasLeadingTrivia) { AddTrivia(node.GetLeadingTrivia()); } FormatElementStartTag(node); if (formatting.HasFlag(ElementFormatting.Preserve)) { _preserve += 1; } if (node.HasTrailingTrivia) { AddTrivia(node.GetTrailingTrivia()); } if (formatting.HasFlag(ElementFormatting.SnugStart)) { Break(BreakMode.SuppressWordBreak); } else if (formatting.HasFlag(ElementFormatting.Block)) { Break(BreakMode.LineBreak); } if (formatting.HasFlag(ElementFormatting.Indent)) { _interiorIndent += _indentSize; } }