mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-17 15:39:30 +02:00
SynEdit: fixes paint-token-breaker for future bidi support
git-svn-id: trunk@39045 -
This commit is contained in:
parent
b57bbc9ef3
commit
0bd7ad7bdd
@ -516,6 +516,7 @@ function TLazSynPaintTokenBreaker.GetNextHighlighterTokenFromView(out
|
||||
// TODO: end, if FCurViewRtlPhysEnd >= FLastCol;
|
||||
if ALogicIdx + FCurViewToken.TokenLength < FCurViewRtlLogEnd then begin
|
||||
if FCurViewToken.TokenLength > 0 then begin
|
||||
ALogicIdx := ALogicIdx + FCurViewToken.TokenLength;
|
||||
FCurViewScannerPos.Logical := FCurViewScannerPos.Logical + FCurViewToken.TokenLength;
|
||||
FCurViewToken.TokenLength := 0;
|
||||
end;
|
||||
@ -576,7 +577,9 @@ function TLazSynPaintTokenBreaker.GetNextHighlighterTokenFromView(out
|
||||
HasDouble := False;
|
||||
TabExtra := 0; // Extra bytes needed for expanded Tab/Space(utf8 visible space/dot)
|
||||
j := (pcw and PCWMask);
|
||||
while (ALogicIdx < ALogicEnd) and (pcw and PCWFlagRTL <> 0) do begin
|
||||
// must go over token bounds
|
||||
//while (ALogicIdx < ALogicEnd) and (pcw and PCWFlagRTL <> 0) do begin
|
||||
while (ALogicIdx < FCharWidthsLen) and (pcw and PCWFlagRTL <> 0) do begin
|
||||
inc(RtlRunPhysWidth, j);
|
||||
|
||||
if j <> 0 then begin
|
||||
@ -593,7 +596,7 @@ function TLazSynPaintTokenBreaker.GetNextHighlighterTokenFromView(out
|
||||
repeat
|
||||
inc(ALogicIdx);
|
||||
inc(i);
|
||||
until (ALogicIdx >= ALogicEnd) or
|
||||
until //(ALogicIdx >= ALogicEnd) or
|
||||
(ALogicIdx >= FCharWidthsLen) or ((FCharWidths[ALogicIdx] and PCWMask) <> 0);
|
||||
|
||||
pcw := GetCharWidthData(ALogicIdx);
|
||||
@ -631,11 +634,6 @@ function TLazSynPaintTokenBreaker.GetNextHighlighterTokenFromView(out
|
||||
ChangeToLtr(ALogicIdx, ALogicEnd);
|
||||
end;
|
||||
|
||||
//procedure SetEOLResult;
|
||||
//begin
|
||||
// ATokenInfo.StartPos := FCurViewScannerPos;
|
||||
//end;
|
||||
|
||||
var
|
||||
i, j: Integer;
|
||||
pcw: TPhysicalCharWidth;
|
||||
|
@ -150,7 +150,7 @@ begin
|
||||
(nSelStart <= AnRtlInfo.PhysLeft)
|
||||
) and
|
||||
( ((nSelEnd < aStartCol.Physical) and (nSelEnd > AnRtlInfo.PhysLeft)) or
|
||||
(nSelEnd > AnRtlInfo.PhysRight) or (nSelEnd < 0))
|
||||
(nSelEnd >= AnRtlInfo.PhysRight) or (nSelEnd < 0))
|
||||
then
|
||||
Result := MarkupInfo;
|
||||
end else begin
|
||||
@ -172,7 +172,7 @@ begin
|
||||
ANextPhys := nSelStart;
|
||||
if (nSelEnd < aStartCol.Physical) and (nSelEnd > 0) and
|
||||
( (nSelStart >= aStartCol.Physical) or
|
||||
((nSelStart < AnRtlInfo.PhysLeft) and (nSelStart > 0)) )
|
||||
((nSelStart <= AnRtlInfo.PhysLeft) and (nSelStart > 0)) )
|
||||
then
|
||||
ANextPhys := nSelEnd;
|
||||
end else begin
|
||||
|
@ -91,6 +91,10 @@ begin
|
||||
#9'i'#9'12'#9,
|
||||
'ي'#9'شس', // 15
|
||||
#9'('#9')',
|
||||
'//شس يشس ي(شس ي',
|
||||
'a ''شس''b',
|
||||
'a ''شسقف',
|
||||
'a ''شسقف', // 20
|
||||
''
|
||||
]);
|
||||
end;
|
||||
@ -267,6 +271,22 @@ type
|
||||
FTheHighLighter.AddToken(7-1, 2, FtkGreen); // i
|
||||
FTheHighLighter.AddToken(7-1, 3, FtkRed); // =
|
||||
FTheHighLighter.AddToken(7-1, 6, FtkGreen); // 123
|
||||
FTheHighLighter.AddToken(17-1, 2, FtkBlue); // //
|
||||
|
||||
FTheHighLighter.AddToken(18-1, 6, FtkGreen); // ' ' 6 spaces
|
||||
FTheHighLighter.AddToken(18-1, 7, FtkYellow); // '
|
||||
FTheHighLighter.AddToken(18-1,11, FtkBlue); // شس
|
||||
FTheHighLighter.AddToken(18-1,12, FtkYellow); // '
|
||||
FTheHighLighter.AddToken(18-1,13, FtkRed); // ,
|
||||
|
||||
FTheHighLighter.AddToken(19-1, 6, FtkGreen); // ' ' 6 spaces
|
||||
FTheHighLighter.AddToken(19-1, 7, FtkYellow); // '
|
||||
FTheHighLighter.AddToken(19-1,15, FtkBlue); // شس
|
||||
|
||||
FTheHighLighter.AddToken(20-1, 6, FtkGreen); // ' ' 6 spaces
|
||||
FTheHighLighter.AddToken(20-1, 7, FtkYellow); // '
|
||||
FTheHighLighter.AddToken(20-1,13, FtkRed); // شس 3 chars, ekcept last will be red
|
||||
FTheHighLighter.AddToken(20-1,15, FtkBlue); // شس
|
||||
|
||||
{%region LTR only }
|
||||
PushBaseName('LTR-Only');
|
||||
@ -439,9 +459,6 @@ type
|
||||
PopBaseName;
|
||||
{%endregion}
|
||||
|
||||
SynEdit.ViewedTextBuffer.DisplayView.FinishHighlighterTokens;
|
||||
SynEdit.Highlighter := nil;
|
||||
SynEdit.ViewedTextBuffer.DisplayView.InitHighlighterTokens(SynEdit.Highlighter);
|
||||
{%region RTL only }
|
||||
PushBaseName('RTL-Only');
|
||||
{%region full line}
|
||||
@ -661,9 +678,21 @@ type
|
||||
TestNext([], b( 1, 1), b( 2, 2), 1, 2, 1, 2, False, 'A');
|
||||
TestEnd;
|
||||
|
||||
{%endregion}
|
||||
|
||||
|
||||
{%region}
|
||||
TestStart('Scan full line 18 / hl-token', 20, 9, 30, 20);
|
||||
TestNext([], b(12, 8, 0), b( 9,14, 0), 9,12, 9,12, True, 'شسق', clRed, b(12, 16, 0), False);
|
||||
TestEnd(b(12, 16, 0));
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 20, 10, 30, 20);
|
||||
TestNext([], b(12, 8, 0), b(10,12, 0), 10,12, 10,12, True, 'شس', clRed, b(12, 16, 0), False);
|
||||
TestEnd(b(12, 16, 0));
|
||||
|
||||
{%endregion}
|
||||
|
||||
|
||||
PopBaseName;
|
||||
{%endregion}
|
||||
|
||||
@ -727,7 +756,6 @@ type
|
||||
TestNext([], b(25,25, 0), b(30,30, 0), 25,30, 25,30, False, ' ', clPurple);
|
||||
TestNext([], b(30,30, 0), b(99,99, 0), 30,99, 30,99, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
{%endregion}
|
||||
|
||||
{%region}
|
||||
@ -778,6 +806,312 @@ type
|
||||
{%endregion}
|
||||
|
||||
|
||||
// HL token ends exactly at LTR to RTL change
|
||||
|
||||
SynEdit.BlockBegin := Point(1,1);
|
||||
TestStart('Scan full line 17 / hl-token', 17, 1, 30, 17);
|
||||
TestNext([], b( 1, 1, 0), b( 3, 3, 0), 1, 3, 1, 3, False, '//', clBlue);
|
||||
TestNext([], b(16, 3, 0), b( 3,25, 0), 3,16, 3,16, True, 'شس يشس ي(شس ي', clBlack);
|
||||
TestNext([], b(16,25, 0), b(30,39, 0), 16,30, 16,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
SynEdit.BlockBegin := Point( 3,17);
|
||||
SynEdit.BlockEnd := Point(25,17);
|
||||
TestStart('Scan full line 17 / hl-token', 17, 1, 30, 17);
|
||||
TestNext([], b( 1, 1, 0), b( 3, 3, 0), 1, 3, 1, 3, False, '//', clBlue);
|
||||
TestNext([], b(16, 3, 0), b( 3,25, 0), 3,16, 3,16, True, 'شس يشس ي(شس ي', clPurple);
|
||||
TestNext([], b(16,25, 0), b(30,39, 0), 16,30, 16,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
SynEdit.BlockBegin := Point( 3,17);
|
||||
SynEdit.BlockEnd := Point(22,17); // 2 chars off
|
||||
TestStart('Scan full line 17 / hl-token', 17, 1, 30, 17);
|
||||
TestNext([], b( 1, 1, 0), b( 3, 3, 0), 1, 3, 1, 3, False, '//', clBlue);
|
||||
TestNext([], b(16, 3, 0), b( 5,22, 0), 5,16, 5,16, True, 'شس يشس ي(شس', clPurple);
|
||||
TestNext([], b( 5,22, 0), b( 3,25, 0), 3, 5, 3, 5, True, ' ي', clBlack);
|
||||
TestNext([], b(16,25, 0), b(30,39, 0), 16,30, 16,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
SynEdit.BlockBegin := Point( 7,17); // 2 chars off
|
||||
SynEdit.BlockEnd := Point(25,17);
|
||||
TestStart('Scan full line 17 / hl-token', 17, 1, 30, 17);
|
||||
TestNext([], b( 1, 1, 0), b( 3, 3, 0), 1, 3, 1, 3, False, '//', clBlue);
|
||||
TestNext([], b(16, 3, 0), b(14, 7, 0), 14,16, 14,16, True, 'شس', clBlack);
|
||||
TestNext([], b(14, 7, 0), b( 3,25, 0), 3,14, 3,14, True, ' يشس ي(شس ي', clPurple);
|
||||
TestNext([], b(16,25, 0), b(30,39, 0), 16,30, 16,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
SynEdit.BlockBegin := Point( 7,17);
|
||||
SynEdit.BlockEnd := Point(22,17);
|
||||
TestStart('Scan full line 17 / hl-token', 17, 1, 30, 17);
|
||||
TestNext([], b( 1, 1, 0), b( 3, 3, 0), 1, 3, 1, 3, False, '//', clBlue);
|
||||
TestNext([], b(16, 3, 0), b(14, 7, 0), 14,16, 14,16, True, 'شس', clBlack);
|
||||
TestNext([], b(14, 7, 0), b( 5,22, 0), 5,14, 5,14, True, ' يشس ي(شس', clPurple);
|
||||
TestNext([], b( 5,22, 0), b( 3,25, 0), 3, 5, 3, 5, True, ' ي', clBlack);
|
||||
TestNext([], b(16,25, 0), b(30,39, 0), 16,30, 16,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
// Mixed RTL (and weak)
|
||||
// increase LeftChar
|
||||
SynEdit.BlockBegin := Point(1,1);
|
||||
TestStart('Scan full line 18 / hl-token', 18, 1, 30, 18);
|
||||
TestNext([], b( 1, 1, 0), b( 7, 7, 0), 1, 7, 1, 7, False, 'a ', clGreen);
|
||||
TestNext([], b( 7, 7, 0), b( 8, 8, 0), 7, 8, 7, 8, False, '''', clYellow);
|
||||
TestNext([], b(10, 8, 0), b( 8,12, 0), 8,10, 8,10, True, 'شس', clBlue);
|
||||
TestNext([], b(10,12, 0), b(11,13, 0), 10,11, 10,11, False, '''', clYellow);
|
||||
TestNext([], b(11,13, 0), b(12,14, 0), 11,12, 11,12, False, 'b', clRed);
|
||||
TestNext([], b(12,14, 0), b(30,32, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 18, 2, 30, 18);
|
||||
TestNext([], b( 2, 2, 0), b( 7, 7, 0), 2, 7, 2, 7, False, ' ', clGreen);
|
||||
TestNext([], b( 7, 7, 0), b( 8, 8, 0), 7, 8, 7, 8, False, '''', clYellow);
|
||||
TestNext([], b(10, 8, 0), b( 8,12, 0), 8,10, 8,10, True, 'شس', clBlue);
|
||||
TestNext([], b(10,12, 0), b(11,13, 0), 10,11, 10,11, False, '''', clYellow);
|
||||
TestNext([], b(11,13, 0), b(12,14, 0), 11,12, 11,12, False, 'b', clRed);
|
||||
TestNext([], b(12,14, 0), b(30,32, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 18, 3, 30, 18);
|
||||
TestNext([], b( 3, 3, 0), b( 7, 7, 0), 3, 7, 3, 7, False, ' ', clGreen);
|
||||
TestNext([], b( 7, 7, 0), b( 8, 8, 0), 7, 8, 7, 8, False, '''', clYellow);
|
||||
TestNext([], b(10, 8, 0), b( 8,12, 0), 8,10, 8,10, True, 'شس', clBlue);
|
||||
TestNext([], b(10,12, 0), b(11,13, 0), 10,11, 10,11, False, '''', clYellow);
|
||||
TestNext([], b(11,13, 0), b(12,14, 0), 11,12, 11,12, False, 'b', clRed);
|
||||
TestNext([], b(12,14, 0), b(30,32, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 18, 4, 30, 18);
|
||||
TestNext([], b( 4, 4, 0), b( 7, 7, 0), 4, 7, 4, 7, False, ' ', clGreen);
|
||||
TestNext([], b( 7, 7, 0), b( 8, 8, 0), 7, 8, 7, 8, False, '''', clYellow);
|
||||
TestNext([], b(10, 8, 0), b( 8,12, 0), 8,10, 8,10, True, 'شس', clBlue);
|
||||
TestNext([], b(10,12, 0), b(11,13, 0), 10,11, 10,11, False, '''', clYellow);
|
||||
TestNext([], b(11,13, 0), b(12,14, 0), 11,12, 11,12, False, 'b', clRed);
|
||||
TestNext([], b(12,14, 0), b(30,32, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 18, 5, 30, 18);
|
||||
TestNext([], b( 5, 5, 0), b( 7, 7, 0), 5, 7, 5, 7, False, ' ', clGreen);
|
||||
TestNext([], b( 7, 7, 0), b( 8, 8, 0), 7, 8, 7, 8, False, '''', clYellow);
|
||||
TestNext([], b(10, 8, 0), b( 8,12, 0), 8,10, 8,10, True, 'شس', clBlue);
|
||||
TestNext([], b(10,12, 0), b(11,13, 0), 10,11, 10,11, False, '''', clYellow);
|
||||
TestNext([], b(11,13, 0), b(12,14, 0), 11,12, 11,12, False, 'b', clRed);
|
||||
TestNext([], b(12,14, 0), b(30,32, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 18, 6, 30, 18);
|
||||
TestNext([], b( 6, 6, 0), b( 7, 7, 0), 6, 7, 6, 7, False, ' ', clGreen);
|
||||
TestNext([], b( 7, 7, 0), b( 8, 8, 0), 7, 8, 7, 8, False, '''', clYellow);
|
||||
TestNext([], b(10, 8, 0), b( 8,12, 0), 8,10, 8,10, True, 'شس', clBlue);
|
||||
TestNext([], b(10,12, 0), b(11,13, 0), 10,11, 10,11, False, '''', clYellow);
|
||||
TestNext([], b(11,13, 0), b(12,14, 0), 11,12, 11,12, False, 'b', clRed);
|
||||
TestNext([], b(12,14, 0), b(30,32, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 18, 7, 30, 18);
|
||||
TestNext([], b( 7, 7, 0), b( 8, 8, 0), 7, 8, 7, 8, False, '''', clYellow);
|
||||
TestNext([], b(10, 8, 0), b( 8,12, 0), 8,10, 8,10, True, 'شس', clBlue);
|
||||
TestNext([], b(10,12, 0), b(11,13, 0), 10,11, 10,11, False, '''', clYellow);
|
||||
TestNext([], b(11,13, 0), b(12,14, 0), 11,12, 11,12, False, 'b', clRed);
|
||||
TestNext([], b(12,14, 0), b(30,32, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 18, 8, 30, 18);
|
||||
TestNext([], b(10, 8, 0), b( 8,12, 0), 8,10, 8,10, True, 'شس', clBlue);
|
||||
TestNext([], b(10,12, 0), b(11,13, 0), 10,11, 10,11, False, '''', clYellow);
|
||||
TestNext([], b(11,13, 0), b(12,14, 0), 11,12, 11,12, False, 'b', clRed);
|
||||
TestNext([], b(12,14, 0), b(30,32, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 18, 9, 30, 18);
|
||||
TestNext([], b(10, 8, 0), b( 9,10, 0), 9,10, 9,10, True, 'ش', clBlue);
|
||||
TestNext([], b(10,12, 0), b(11,13, 0), 10,11, 10,11, False, '''', clYellow);
|
||||
TestNext([], b(11,13, 0), b(12,14, 0), 11,12, 11,12, False, 'b', clRed);
|
||||
TestNext([], b(12,14, 0), b(30,32, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 18, 10, 30, 18);
|
||||
TestNext([], b(10,12, 0), b(11,13, 0), 10,11, 10,11, False, '''', clYellow);
|
||||
TestNext([], b(11,13, 0), b(12,14, 0), 11,12, 11,12, False, 'b', clRed);
|
||||
TestNext([], b(12,14, 0), b(30,32, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 18, 11, 30, 18);
|
||||
TestNext([], b(11,13, 0), b(12,14, 0), 11,12, 11,12, False, 'b', clRed);
|
||||
TestNext([], b(12,14, 0), b(30,32, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
// Mixed RTL (and weak), end in RTL
|
||||
// increase LeftChar
|
||||
SynEdit.BlockBegin := Point(1,1);
|
||||
TestStart('Scan full line 18 / hl-token', 19, 1, 30, 19);
|
||||
TestNext([], b( 1, 1, 0), b( 7, 7, 0), 1, 7, 1, 7, False, 'a ', clGreen);
|
||||
TestNext([], b( 7, 7, 0), b( 8, 8, 0), 7, 8, 7, 8, False, '''', clYellow);
|
||||
TestNext([], b(12, 8, 0), b( 8,16, 0), 8,12, 8,12, True, 'شسقف', clBlue);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 19, 2, 30, 19);
|
||||
TestNext([], b( 2, 2, 0), b( 7, 7, 0), 2, 7, 2, 7, False, ' ', clGreen);
|
||||
TestNext([], b( 7, 7, 0), b( 8, 8, 0), 7, 8, 7, 8, False, '''', clYellow);
|
||||
TestNext([], b(12, 8, 0), b( 8,16, 0), 8,12, 8,12, True, 'شسقف', clBlue);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 19, 3, 30, 19);
|
||||
TestNext([], b( 3, 3, 0), b( 7, 7, 0), 3, 7, 3, 7, False, ' ', clGreen);
|
||||
TestNext([], b( 7, 7, 0), b( 8, 8, 0), 7, 8, 7, 8, False, '''', clYellow);
|
||||
TestNext([], b(12, 8, 0), b( 8,16, 0), 8,12, 8,12, True, 'شسقف', clBlue);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 19, 4, 30, 19);
|
||||
TestNext([], b( 4, 4, 0), b( 7, 7, 0), 4, 7, 4, 7, False, ' ', clGreen);
|
||||
TestNext([], b( 7, 7, 0), b( 8, 8, 0), 7, 8, 7, 8, False, '''', clYellow);
|
||||
TestNext([], b(12, 8, 0), b( 8,16, 0), 8,12, 8,12, True, 'شسقف', clBlue);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 19, 5, 30, 19);
|
||||
TestNext([], b( 5, 5, 0), b( 7, 7, 0), 5, 7, 5, 7, False, ' ', clGreen);
|
||||
TestNext([], b( 7, 7, 0), b( 8, 8, 0), 7, 8, 7, 8, False, '''', clYellow);
|
||||
TestNext([], b(12, 8, 0), b( 8,16, 0), 8,12, 8,12, True, 'شسقف', clBlue);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 19, 6, 30, 19);
|
||||
TestNext([], b( 6, 6, 0), b( 7, 7, 0), 6, 7, 6, 7, False, ' ', clGreen);
|
||||
TestNext([], b( 7, 7, 0), b( 8, 8, 0), 7, 8, 7, 8, False, '''', clYellow);
|
||||
TestNext([], b(12, 8, 0), b( 8,16, 0), 8,12, 8,12, True, 'شسقف', clBlue);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 19, 7, 30, 19);
|
||||
TestNext([], b( 7, 7, 0), b( 8, 8, 0), 7, 8, 7, 8, False, '''', clYellow);
|
||||
TestNext([], b(12, 8, 0), b( 8,16, 0), 8,12, 8,12, True, 'شسقف', clBlue);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 19, 8, 30, 19);
|
||||
TestNext([], b(12, 8, 0), b( 8,16, 0), 8,12, 8,12, True, 'شسقف', clBlue);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 19, 9, 30, 19);
|
||||
TestNext([], b(12, 8, 0), b( 9,14, 0), 9,12, 9,12, True, 'شسق', clBlue);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 19, 10, 30, 19);
|
||||
TestNext([], b(12, 8, 0), b(10,12, 0), 10,12, 10,12, True, 'شس', clBlue);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 19, 11, 30, 19);
|
||||
TestNext([], b(12, 8, 0), b(11,10, 0), 11,12, 11,12, True, 'ش', clBlue);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 19, 12, 30, 19);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 19, 13, 30, 19);
|
||||
TestNext([], b(13,17, 0), b(30,34, 0), 13,30, 13,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
// Change highlight, so last char is diff color
|
||||
|
||||
SynEdit.BlockBegin := Point(1,1);
|
||||
TestStart('Scan full line 18 / hl-token', 20, 1, 30, 20);
|
||||
TestNext([], b( 1, 1, 0), b( 7, 7, 0), 1, 7, 1, 7, False, 'a ', clGreen);
|
||||
TestNext([], b( 7, 7, 0), b( 8, 8, 0), 7, 8, 7, 8, False, '''', clYellow);
|
||||
TestNext([], b(12, 8, 0), b( 9,14, 0), 9,12, 9,12, True, 'شسق', clRed);
|
||||
TestNext([], b( 9,14, 0), b( 8,16, 0), 8, 9, 8, 9, True, 'ف', clBlue);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 20, 2, 30, 20);
|
||||
TestNext([], b( 2, 2, 0), b( 7, 7, 0), 2, 7, 2, 7, False, ' ', clGreen);
|
||||
TestNext([], b( 7, 7, 0), b( 8, 8, 0), 7, 8, 7, 8, False, '''', clYellow);
|
||||
TestNext([], b(12, 8, 0), b( 9,14, 0), 9,12, 9,12, True, 'شسق', clRed);
|
||||
TestNext([], b( 9,14, 0), b( 8,16, 0), 8, 9, 8, 9, True, 'ف', clBlue);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 20, 3, 30, 20);
|
||||
TestNext([], b( 3, 3, 0), b( 7, 7, 0), 3, 7, 3, 7, False, ' ', clGreen);
|
||||
TestNext([], b( 7, 7, 0), b( 8, 8, 0), 7, 8, 7, 8, False, '''', clYellow);
|
||||
TestNext([], b(12, 8, 0), b( 9,14, 0), 9,12, 9,12, True, 'شسق', clRed);
|
||||
TestNext([], b( 9,14, 0), b( 8,16, 0), 8, 9, 8, 9, True, 'ف', clBlue);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 20, 4, 30, 20);
|
||||
TestNext([], b( 4, 4, 0), b( 7, 7, 0), 4, 7, 4, 7, False, ' ', clGreen);
|
||||
TestNext([], b( 7, 7, 0), b( 8, 8, 0), 7, 8, 7, 8, False, '''', clYellow);
|
||||
TestNext([], b(12, 8, 0), b( 9,14, 0), 9,12, 9,12, True, 'شسق', clRed);
|
||||
TestNext([], b( 9,14, 0), b( 8,16, 0), 8, 9, 8, 9, True, 'ف', clBlue);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 20, 5, 30, 20);
|
||||
TestNext([], b( 5, 5, 0), b( 7, 7, 0), 5, 7, 5, 7, False, ' ', clGreen);
|
||||
TestNext([], b( 7, 7, 0), b( 8, 8, 0), 7, 8, 7, 8, False, '''', clYellow);
|
||||
TestNext([], b(12, 8, 0), b( 9,14, 0), 9,12, 9,12, True, 'شسق', clRed);
|
||||
TestNext([], b( 9,14, 0), b( 8,16, 0), 8, 9, 8, 9, True, 'ف', clBlue);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 20, 6, 30, 20);
|
||||
TestNext([], b( 6, 6, 0), b( 7, 7, 0), 6, 7, 6, 7, False, ' ', clGreen);
|
||||
TestNext([], b( 7, 7, 0), b( 8, 8, 0), 7, 8, 7, 8, False, '''', clYellow);
|
||||
TestNext([], b(12, 8, 0), b( 9,14, 0), 9,12, 9,12, True, 'شسق', clRed);
|
||||
TestNext([], b( 9,14, 0), b( 8,16, 0), 8, 9, 8, 9, True, 'ف', clBlue);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 20, 7, 30, 20);
|
||||
TestNext([], b( 7, 7, 0), b( 8, 8, 0), 7, 8, 7, 8, False, '''', clYellow);
|
||||
TestNext([], b(12, 8, 0), b( 9,14, 0), 9,12, 9,12, True, 'شسق', clRed);
|
||||
TestNext([], b( 9,14, 0), b( 8,16, 0), 8, 9, 8, 9, True, 'ف', clBlue);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 20, 8, 30, 20);
|
||||
TestNext([], b(12, 8, 0), b( 9,14, 0), 9,12, 9,12, True, 'شسق', clRed);
|
||||
TestNext([], b( 9,14, 0), b( 8,16, 0), 8, 9, 8, 9, True, 'ف', clBlue);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 20, 9, 30, 20);
|
||||
TestNext([], b(12, 8, 0), b( 9,14, 0), 9,12, 9,12, True, 'شسق', clRed);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 20, 10, 30, 20);
|
||||
TestNext([], b(12, 8, 0), b(10,12, 0), 10,12, 10,12, True, 'شس', clRed);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 20, 11, 30, 20);
|
||||
TestNext([], b(12, 8, 0), b(11,10, 0), 11,12, 11,12, True, 'ش', clRed);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 20, 12, 30, 20);
|
||||
TestNext([], b(12,16, 0), b(30,34, 0), 12,30, 12,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
TestStart('Scan full line 18 / hl-token', 20, 13, 30, 20);
|
||||
TestNext([], b(13,17, 0), b(30,34, 0), 13,30, 13,30, False, ' ', clBlack);
|
||||
TestEnd;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
SynEdit.ViewedTextBuffer.DisplayView.FinishHighlighterTokens;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user