Skip to content

Commit eeb3747

Browse files
committed
初步完成do语句块可以无缩进,label可以无缩进
1 parent 799a7f2 commit eeb3747

File tree

9 files changed

+36
-32
lines changed

9 files changed

+36
-32
lines changed

CodeService/src/FormatElement/AlignToFirstElement.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ void AlignToFirstElement::Serialize(SerializeContext& ctx, ChildIterator selfIt,
1818
{
1919
auto writeCount = ctx.GetCharacterCount();
2020
auto indentState = ctx.GetCurrentIndent();
21-
switch (indentState.IndentStyle)
21+
switch (indentState.Style)
2222
{
2323
case IndentStyle::Space:
2424
{
@@ -80,7 +80,7 @@ void AlignToFirstElement::Diagnosis(DiagnosisContext& ctx, ChildIterator selfIt,
8080
{
8181
auto writeCount = ctx.GetCharacterCount();
8282
auto indentState = ctx.GetCurrentIndent();
83-
switch (indentState.IndentStyle)
83+
switch (indentState.Style)
8484
{
8585
case IndentStyle::Space:
8686
{

CodeService/src/FormatElement/FormatContext.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ FormatContext::IndentState FormatContext::CalculateIndentState(int offset)
8989
auto ch = source[start];
9090
if (ch == '\t')
9191
{
92-
state.IndentStyle = IndentStyle::Tab;
92+
state.Style = IndentStyle::Tab;
9393
state.TabIndent++;
9494
}
9595
else
@@ -100,7 +100,7 @@ FormatContext::IndentState FormatContext::CalculateIndentState(int offset)
100100

101101
if(state.TabIndent == 0 && state.SpaceIndent == 0)
102102
{
103-
state.IndentStyle = _options.indent_style;
103+
state.Style = _options.indent_style;
104104
}
105105

106106
return state;

CodeService/src/FormatElement/IndentElement.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,20 +72,20 @@ void IndentElement::Diagnosis(DiagnosisContext& ctx, ChildIterator selfIt, Forma
7272
auto character = ctx.GetColumn(range.StartOffset);
7373
auto indentState = ctx.CalculateIndentState(range.StartOffset);
7474
auto state = ctx.GetCurrentIndent();
75-
if (ctx.GetOptions().indent_style != indentState.IndentStyle)
75+
if (ctx.GetOptions().indent_style != indentState.Style)
7676
{
7777
ctx.PushDiagnosis(
7878
format(LText("incorrect indentation style, expect {}, but here is {}"),
79-
GetIndentStyleName(state.IndentStyle),
80-
GetIndentStyleName(indentState.IndentStyle)
79+
GetIndentStyleName(state.Style),
80+
GetIndentStyleName(indentState.Style)
8181
),
8282
LuaDiagnosisPosition(line, 0),
8383
LuaDiagnosisPosition(line, character)
8484
);
8585
goto endIndentDiagnose;
8686
}
8787

88-
if (indentState.IndentStyle == IndentStyle::Space) {
88+
if (indentState.Style == IndentStyle::Space) {
8989
if (state.SpaceIndent != indentState.SpaceIndent)
9090
{
9191
ctx.PushDiagnosis(

CodeService/src/FormatElement/LongExpressionLayoutElement.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ void LongExpressionLayoutElement::SerializeSubExpression(SerializeContext& ctx,
5151
{
5252
_hasContinuation = true;
5353
auto state = ctx.GetCurrentIndent();
54-
state.SpaceIndent = _continuationIndent;
54+
state.SpaceIndent += _continuationIndent;
5555
ctx.AddIndent(state);
5656
}
5757
}
@@ -79,7 +79,7 @@ void LongExpressionLayoutElement::DiagnosisSubExpression(DiagnosisContext& ctx,
7979
{
8080
_hasContinuation = true;
8181
auto state = ctx.GetCurrentIndent();
82-
state.SpaceIndent = _continuationIndent;
82+
state.SpaceIndent += _continuationIndent;
8383
ctx.AddIndent(state);
8484
}
8585
}

CodeService/src/FormatElement/NoIndentElement.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,20 +38,20 @@ void NoIndentElement::Diagnosis(DiagnosisContext& ctx, ChildIterator shared_ptr,
3838
auto character = ctx.GetColumn(range.StartOffset);
3939
auto indentState = ctx.CalculateIndentState(range.StartOffset);
4040
auto state = ctx.GetCurrentIndent();
41-
if (ctx.GetOptions().indent_style != indentState.IndentStyle)
41+
if (ctx.GetOptions().indent_style != indentState.Style)
4242
{
4343
ctx.PushDiagnosis(
4444
format(LText("incorrect indentation style, expect {}, but here is {}"),
45-
GetIndentStyleName(state.IndentStyle),
46-
GetIndentStyleName(indentState.IndentStyle)
45+
GetIndentStyleName(state.Style),
46+
GetIndentStyleName(indentState.Style)
4747
),
4848
LuaDiagnosisPosition(line, 0),
4949
LuaDiagnosisPosition(line, character)
5050
);
5151
goto endIndentDiagnose;
5252
}
5353

54-
if (indentState.IndentStyle == IndentStyle::Space)
54+
if (indentState.Style == IndentStyle::Space)
5555
{
5656
if (state.SpaceIndent != indentState.SpaceIndent)
5757
{

CodeService/src/FormatElement/RangeFormatContext.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,18 @@ void RangeFormatContext::Print(TextElement& textElement)
2828
if (!_indentStack.empty())
2929
{
3030
auto& indentState = _indentStack.back();
31-
if (indentState.IndentStyle == IndentStyle::Space)
31+
if (indentState.Style == IndentStyle::Space)
3232
{
3333
if (_characterCount < indentState.SpaceIndent)
3434
{
35-
PrintIndent(indentState.SpaceIndent - _characterCount, indentState.IndentStyle);
35+
PrintIndent(indentState.SpaceIndent - _characterCount, indentState.Style);
3636
}
3737
}
3838
else
3939
{
4040
if (_characterCount == 0)
4141
{
42-
PrintIndent(indentState.TabIndent, indentState.IndentStyle);
42+
PrintIndent(indentState.TabIndent, indentState.Style);
4343
PrintIndent(indentState.SpaceIndent, IndentStyle::Space);
4444
}
4545
else if (_characterCount >= indentState.TabIndent && (indentState.SpaceIndent + indentState.TabIndent >

CodeService/src/FormatElement/SerializeContext.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,18 @@ void SerializeContext::Print(TextElement& textElement)
1111
if (!_indentStack.empty())
1212
{
1313
auto& indentState = _indentStack.back();
14-
if (indentState.IndentStyle == IndentStyle::Space)
14+
if (indentState.Style == IndentStyle::Space)
1515
{
1616
if (_characterCount < indentState.SpaceIndent)
1717
{
18-
PrintIndent(indentState.SpaceIndent - _characterCount, indentState.IndentStyle);
18+
PrintIndent(indentState.SpaceIndent - _characterCount, indentState.Style);
1919
}
2020
}
2121
else
2222
{
2323
if (_characterCount == 0)
2424
{
25-
PrintIndent(indentState.TabIndent, indentState.IndentStyle);
25+
PrintIndent(indentState.TabIndent, indentState.Style);
2626
PrintIndent(indentState.SpaceIndent, IndentStyle::Space);
2727
}
2828
else if (_characterCount >= indentState.TabIndent && (indentState.SpaceIndent + indentState.TabIndent >

CodeService/src/LuaFormatter.cpp

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -728,20 +728,24 @@ std::shared_ptr<FormatElement> LuaFormatter::FormatDoStatement(std::shared_ptr<L
728728
auto& children = doStatement->GetChildren();
729729
auto it = children.begin();
730730
bool singleLine = false;
731-
auto block = FormatNodeAndBlockOrEnd(it, singleLine, children);
731+
auto doBlockEnd = FormatNodeAndBlockOrEnd(it, singleLine, children);
732732

733-
std::shared_ptr<FormatElement> childEnv = nullptr;
734-
if (_options.do_statement_no_indent)
733+
if (_options.do_statement_no_indent && !singleLine)
735734
{
736-
childEnv = std::make_shared<NoIndentElement>();
737-
childEnv->AddChild(block);
738-
}
739-
else
740-
{
741-
childEnv = block;
735+
for (auto& child : doBlockEnd->GetChildren())
736+
{
737+
if (child->GetType() == FormatElementType::IndentElement)
738+
{
739+
auto indentElement = std::make_shared<IndentElement>();
740+
auto noIndent = std::make_shared<NoIndentElement>();
741+
noIndent->AddChildren(child->GetChildren());
742+
indentElement->AddChild(noIndent);
743+
child = indentElement;
744+
}
745+
}
742746
}
743747

744-
env->AddChild(childEnv);
748+
env->AddChild(doBlockEnd);
745749
return env;
746750
}
747751

@@ -1062,7 +1066,7 @@ std::shared_ptr<FormatElement> LuaFormatter::FormatCallArgList(std::shared_ptr<L
10621066
alignToFirstEnv->AddChildren(exprListEnv->GetChildren());
10631067
env->AddChild(alignToFirstEnv);
10641068
}
1065-
else
1069+
else
10661070
{
10671071
auto& exprListChildren = exprListEnv->GetChildren();
10681072
auto keepElement = std::make_shared<KeepElement>(0);

include/CodeService/FormatElement/FormatContext.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class FormatContext
1414
{
1515
std::size_t SpaceIndent = 0;
1616
std::size_t TabIndent = 0;
17-
IndentStyle IndentStyle = IndentStyle::Space;
17+
IndentStyle Style = IndentStyle::Space;
1818
};
1919

2020
FormatContext(std::shared_ptr<LuaParser> parser, LuaCodeStyleOptions& options);

0 commit comments

Comments
 (0)