mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-02-01 09:35:39 -05:00
Avoid unnecessary indents for compount boolean expressions (#246)
- Avoid incrementing indents for compound binary boolean expressions. Multiple 'AND x = Y' statements were each indenting instead of having the same indent level. - Fixes https://github.com/Microsoft/vscode-mssql/issues/709
This commit is contained in:
@@ -38,12 +38,15 @@ namespace Microsoft.SqlTools.ServiceLayer.Formatter
|
||||
|
||||
internal override void ProcessPrefixRegion(int startTokenNumber, int firstChildStartTokenNumber)
|
||||
{
|
||||
SpaceSeparatedListFormatter.ProcessPrefixRegion(startTokenNumber, firstChildStartTokenNumber);
|
||||
// Binary boolean expressions
|
||||
bool allowIncrement = !(CodeObject.Parent is SqlBinaryBooleanExpression);
|
||||
SpaceSeparatedListFormatter.ProcessPrefixRegion(startTokenNumber, firstChildStartTokenNumber, allowIncrement);
|
||||
}
|
||||
|
||||
internal override void ProcessSuffixRegion(int lastChildEndTokenNumber, int endTokenNumber)
|
||||
{
|
||||
SpaceSeparatedListFormatter.ProcessSuffixRegion(lastChildEndTokenNumber, endTokenNumber);
|
||||
bool allowDecrement = !(CodeObject.Parent is SqlBinaryBooleanExpression);
|
||||
SpaceSeparatedListFormatter.ProcessSuffixRegion(lastChildEndTokenNumber, endTokenNumber, allowDecrement);
|
||||
}
|
||||
|
||||
internal override void ProcessInterChildRegion(SqlCodeObject previousChild, SqlCodeObject nextChild)
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Formatter
|
||||
/// </summary>
|
||||
internal abstract class WhiteSpaceSeparatedListFormatter : ASTNodeFormatterT<SqlCodeObject>
|
||||
{
|
||||
private bool IncremenetIndentLevelOnPrefixRegion { get; set; }
|
||||
private bool IncrementIndentLevelOnPrefixRegion { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// This constructor initalizes the <see cref="Visitor"/> and <see cref="CodeObject"/> properties since the formatter's entry point
|
||||
@@ -25,21 +25,30 @@ namespace Microsoft.SqlTools.ServiceLayer.Formatter
|
||||
internal WhiteSpaceSeparatedListFormatter(FormatterVisitor visitor, SqlCodeObject codeObject, bool incrementIndentLevelOnPrefixRegion)
|
||||
: base(visitor, codeObject)
|
||||
{
|
||||
IncremenetIndentLevelOnPrefixRegion = incrementIndentLevelOnPrefixRegion;
|
||||
IncrementIndentLevelOnPrefixRegion = incrementIndentLevelOnPrefixRegion;
|
||||
}
|
||||
|
||||
internal override void ProcessPrefixRegion(int startTokenNumber, int firstChildStartTokenNumber)
|
||||
internal void ProcessPrefixRegion(int startTokenNumber, int firstChildStartTokenNumber, bool allowIncrement)
|
||||
{
|
||||
if (IncremenetIndentLevelOnPrefixRegion)
|
||||
if (allowIncrement && IncrementIndentLevelOnPrefixRegion)
|
||||
{
|
||||
IncrementIndentLevel();
|
||||
}
|
||||
base.ProcessPrefixRegion(startTokenNumber, firstChildStartTokenNumber);
|
||||
}
|
||||
|
||||
internal override void ProcessPrefixRegion(int startTokenNumber, int firstChildStartTokenNumber)
|
||||
{
|
||||
ProcessPrefixRegion(startTokenNumber, firstChildStartTokenNumber, true);
|
||||
}
|
||||
|
||||
internal override void ProcessSuffixRegion(int lastChildEndTokenNumber, int endTokenNumber)
|
||||
{
|
||||
if (IncremenetIndentLevelOnPrefixRegion)
|
||||
ProcessSuffixRegion(lastChildEndTokenNumber, endTokenNumber, true);
|
||||
}
|
||||
internal void ProcessSuffixRegion(int lastChildEndTokenNumber, int endTokenNumber, bool allowDecrement)
|
||||
{
|
||||
if (allowDecrement && IncrementIndentLevelOnPrefixRegion)
|
||||
{
|
||||
DecrementIndentLevel();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user