diff --git a/components/synedit/synhighlightermulti.pas b/components/synedit/synhighlightermulti.pas
index 22eed20b44..da85c23e89 100644
--- a/components/synedit/synhighlightermulti.pas
+++ b/components/synedit/synhighlightermulti.pas
@@ -683,9 +683,9 @@ begin
FSectionList.Delete(FRegionScanRangeIndex);
VDiff := 0;
{$IFDEF SynDebugMultiHL}
- DebugLn(SYNDEBUG_MULTIHL, ['***** ', FRegionScanStartRangeIndex, ' cnt ', Count]);
+ DebugLn(SYNDEBUG_MULTIHL, ['***** ', FRegionScanStartRangeIndex, ' cnt ', FSectionList.Count]);
{$ENDIF}
- if FRegionScanStartRangeIndex < Count then begin
+ if FRegionScanStartRangeIndex < FSectionList.Count then begin
// fix virtual lines on sections
if (FRegionScanStartRangeIndex > 0) then begin
s := FSectionList.Sections[FRegionScanStartRangeIndex-1];
@@ -1077,6 +1077,7 @@ var
var
pt: TPoint;
begin
+ //debugln(['StartScheme NewScheme=',dbgs(NewScheme),' StartAtLine=',StartAtLine,' StartAtChar=',StartAtChar,' TokenAtChar=',TokenAtChar]);
pt := Point(TokenAtChar-1, StartAtLine);
if CurRegStart.y < 0 then
DefaultVirtualLines.RegionScanUpdateFirstRegionEnd(pt, 0)
@@ -1094,6 +1095,7 @@ var
var
pt: TPoint;
begin
+ //debugln(['EndScheme EndAtLine=',EndAtLine,' EndAtChar=',EndAtChar,' TokenAtChar=',TokenEndChar]);
pt := Point(EndAtChar, EndAtLine);
if CurRegStart.y < 0 then
FCurScheme.VirtualLines.RegionScanUpdateFirstRegionEnd(pt, TokenEndChar)
diff --git a/components/synedit/test/testhighlightmulti.pas b/components/synedit/test/testhighlightmulti.pas
index 46b0e9624b..9cdb0921de 100644
--- a/components/synedit/test/testhighlightmulti.pas
+++ b/components/synedit/test/testhighlightmulti.pas
@@ -905,7 +905,63 @@ var
end;
begin
TSynEditStringList(SynEdit.TextBuffer).AddChangeHandler(senrHighlightChanged, @DoHighlightChanged);
+ {%region Issue 0022745}
+ PushBaseName('Insert at end, create new section at end'); // Issue 0022745
+ SynEdit.ClearAll;
+ InitMultiXmlPasHl;
+ SynEdit.TestTypeText(1, 1, ''+#13);
+ SynEdit.TestTypeText( ''+#13);
+ SynEdit.TestTypeText( ''+#13);
+ SynEdit.TestTypeText( ''+#13);
+ SynEdit.TestTypeText( ''+#13);
+ SynEdit.TestTypeText( ''+#13);
+ SynEdit.TestTypeText( ''+#13);
+ SynEdit.TestTypeText( ''+#13);
+ SynEdit.TestTypeText( ''+#13);
+ SynEdit.TestTypeText( ''+#13);
+ SynEdit.TestTypeText( ''+#13);
+ SynEdit.TestTypeText( ''+#13);
+ SynEdit.TestTypeText( ''+#13);
+ SynEdit.TestTypeText( ''+#13);
+ SynEdit.TestTypeText( ''+#13);
+ SynEdit.TestTypeText( ''+#13);
+ SynEdit.TestTypeText( ''+#13);
+ SynEdit.TestTypeText( ''+#13);
+ SynEdit.TestTypeText( ''+#13);
+ SynEdit.TestTypeText( ''+#13);
+//DumpAll(MultiHl);
+
+ FinishMultiXmlPasHl;
+ PopBaseName;
+
+
+
+
+ PushBaseName('0022745'); // Issue 0022745
+ SynEdit.ClearAll;
+ InitMultiXmlPasHl;
+
+ SynEdit.TestTypeText(1, 1,
+ ''+#13+
+ ''+#13+
+ ''+#13+
+ ''+#13+
+ ''+#13+
+ ''+#13,
+ True
+ );
+
+ //PushBaseName('Insert ""');
+ // CheckTokensForLine('1st line=html', MultiHl, 0, [AtPasMark]);
+ // CheckTokensForLine('2nd line=html', MultiHl, 1, [AtPasMark]);
+ // AssertEquals(BaseTestName + 'Section Count def', 0, MultiHl.DefaultVirtualLines.SectionList.Count);
+ // AssertEquals(BaseTestName + 'Section Count pas', 1, PasScheme.VirtualLines.SectionList.Count);
+
+ FinishMultiXmlPasHl;
+ PopBaseName;
+
+ {%endregion}
{%region Issue 0022519}
PushBaseName('append after EOT (default scheme)'); // Issue 0022519