@@ -6,22 +6,25 @@ RangeFormatContext::RangeFormatContext(std::shared_ptr<LuaParser> parser, LuaCod
66 LuaFormatRange validRange)
77 : FormatContext(parser, options),
88 _validRange(validRange),
9- _formattedLine(-1 )
9+ _formattedRange(validRange),
10+ _inValidRange(false )
1011
1112{
1213}
1314
1415void RangeFormatContext::Print (TextElement& textElement)
1516{
16- int offset = textElement.GetTextRange ().StartOffset ;
17- int offsetLine = _parser->GetLine (offset);
18- if (offsetLine < _validRange.StartLine || offsetLine > _validRange.EndLine )
17+ int startOffset = textElement.GetTextRange ().StartOffset ;
18+ int startLine = _parser->GetLine (startOffset);
19+ int endLine = _parser->GetLine (textElement.GetTextRange ().EndOffset );
20+ if (startLine > _validRange.EndLine || endLine < _validRange.StartLine )
1921 {
22+ _inValidRange = false ;
2023 _characterCount += textElement.GetText ().size ();
21- _formattedLine = -1 ;
2224 return ;
2325 }
2426
27+ _inValidRange = true ;
2528 auto & indentState = _indentStack.top ();
2629 if (static_cast <int >(_characterCount) < indentState.Indent )
2730 {
@@ -30,7 +33,16 @@ void RangeFormatContext::Print(TextElement& textElement)
3033 _os << textElement.GetText ();
3134 _characterCount += textElement.GetText ().size ();
3235
33- _formattedLine = _parser->GetLine (textElement.GetTextRange ().EndOffset );
36+ if (startLine < _formattedRange.StartLine )
37+ {
38+ _formattedRange.StartLine = startLine;
39+ _formattedRange.StartCharacter = _parser->GetColumn (startOffset);
40+ }
41+
42+ if (endLine > _formattedRange.EndLine )
43+ {
44+ _formattedRange.EndLine = endLine;
45+ }
3446}
3547
3648void RangeFormatContext::PrintBlank (int blank)
@@ -39,7 +51,7 @@ void RangeFormatContext::PrintBlank(int blank)
3951 {
4052 _characterCount++;
4153 }
42- if (_formattedLine >= 0 )
54+ if (_inValidRange )
4355 {
4456 for (int i = 0 ; i < blank; i++)
4557 {
@@ -51,7 +63,7 @@ void RangeFormatContext::PrintBlank(int blank)
5163void RangeFormatContext::PrintLine (int line)
5264{
5365 _characterCount = 0 ;
54- if (_formattedLine >= 0 && _formattedLine <= _validRange. EndLine )
66+ if (_inValidRange )
5567 {
5668 for (int i = 0 ; i < line; i++)
5769 {
@@ -80,5 +92,5 @@ std::string RangeFormatContext::GetText()
8092
8193LuaFormatRange RangeFormatContext::GetFormattedRange ()
8294{
83- return _validRange ;
95+ return _formattedRange ;
8496}
0 commit comments