mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-15 06:09:30 +02:00
SynEdit: added out param AStartBytePos and ALineByteLen to TLazSynDisplayView.SetHighlighterTokensLine
git-svn-id: trunk@63285 -
This commit is contained in:
parent
1e0f270b8f
commit
ee7d180202
@ -215,7 +215,7 @@ type
|
||||
property NextView: TLazSynDisplayView read FNextView write FNextView;
|
||||
public
|
||||
procedure InitHighlighterTokens(AHighlighter: TSynCustomHighlighter); virtual;
|
||||
procedure SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx); virtual;
|
||||
procedure SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx; out AStartBytePos, ALineByteLen: Integer); virtual;
|
||||
procedure FinishHighlighterTokens; virtual;
|
||||
function GetNextHighlighterToken(out ATokenInfo: TLazSynDisplayTokenInfo): Boolean; virtual;
|
||||
function GetLinesCount: Integer; virtual;
|
||||
@ -630,10 +630,12 @@ begin
|
||||
FNextView.InitHighlighterTokens(AHighlighter);
|
||||
end;
|
||||
|
||||
procedure TLazSynDisplayView.SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx);
|
||||
procedure TLazSynDisplayView.SetHighlighterTokensLine(ALine: TLineIdx; out
|
||||
ARealLine: TLineIdx; out AStartBytePos, ALineByteLen: Integer);
|
||||
begin
|
||||
//AStartBytePos := 1;
|
||||
if assigned(FNextView) then
|
||||
FNextView.SetHighlighterTokensLine(ALine, ARealLine);
|
||||
FNextView.SetHighlighterTokensLine(ALine, ARealLine, AStartBytePos, ALineByteLen);
|
||||
end;
|
||||
|
||||
procedure TLazSynDisplayView.FinishHighlighterTokens;
|
||||
|
@ -57,6 +57,7 @@ type
|
||||
FCharWidths: TPhysicalCharWidths;
|
||||
FCharWidthsLen: Integer;
|
||||
FCurTxtLineIdx : Integer;
|
||||
FCurLineByteLen: Integer;
|
||||
|
||||
// Fields for GetNextHighlighterTokenFromView
|
||||
// Info about the token (from highlighter)
|
||||
@ -310,13 +311,16 @@ end;
|
||||
|
||||
procedure TLazSynPaintTokenBreaker.SetHighlighterTokensLine(ALine: TLineIdx; out
|
||||
ARealLine: TLineIdx);
|
||||
var
|
||||
LogLeftPos: Integer;
|
||||
begin
|
||||
FDisplayView.SetHighlighterTokensLine(ALine, ARealLine);
|
||||
FDisplayView.SetHighlighterTokensLine(ALine, ARealLine, LogLeftPos, FCurLineByteLen);
|
||||
FCharWidths := FLinesView.GetPhysicalCharWidths(ARealLine);
|
||||
FCharWidthsLen := Length(FCharWidths);
|
||||
FCurLineByteLen := FCurLineByteLen + LogLeftPos - 1;
|
||||
|
||||
FCurViewToken.TokenLength := 0;
|
||||
FCurViewScannerPos.Logical := 1;
|
||||
FCurViewScannerPos.Logical := LogLeftPos;
|
||||
FCurViewScannerPos.Physical := 1;
|
||||
FCurViewScannerPos.Offset := 0;
|
||||
FCurViewScannerPhysCharPos := 1;
|
||||
@ -495,7 +499,7 @@ function TLazSynPaintTokenBreaker.GetNextHighlighterTokenFromView(out
|
||||
|
||||
function GetCharWidthData(AIdx: Integer): TPhysicalCharWidth; inline;
|
||||
begin
|
||||
if AIdx >= FCharWidthsLen
|
||||
if (AIdx >= FCharWidthsLen) or (AIdx >= FCurLineByteLen)
|
||||
then Result := 1
|
||||
else Result := FCharWidths[AIdx];
|
||||
end;
|
||||
@ -590,7 +594,7 @@ function TLazSynPaintTokenBreaker.GetNextHighlighterTokenFromView(out
|
||||
repeat
|
||||
inc(ALogicIdx);
|
||||
until (ALogicIdx >= ALogicEnd) or
|
||||
(ALogicIdx >= FCharWidthsLen) or ((FCharWidths[ALogicIdx] and PCWMask) <> 0);
|
||||
(ALogicIdx >= FCharWidthsLen) or ((FCharWidths[ALogicIdx] and PCWMask) <> 0);
|
||||
|
||||
pcw := GetCharWidthData(ALogicIdx);
|
||||
j := pcw and PCWMask;
|
||||
@ -622,7 +626,7 @@ function TLazSynPaintTokenBreaker.GetNextHighlighterTokenFromView(out
|
||||
j := (pcw and PCWMask);
|
||||
// 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
|
||||
while (ALogicIdx < FCharWidthsLen) and (ALogicIdx < FCurLineByteLen) and (pcw and PCWFlagRTL <> 0) do begin
|
||||
inc(RtlRunPhysWidth, j);
|
||||
|
||||
if j <> 0 then begin
|
||||
@ -641,7 +645,7 @@ function TLazSynPaintTokenBreaker.GetNextHighlighterTokenFromView(out
|
||||
repeat
|
||||
inc(ALogicIdx);
|
||||
inc(i);
|
||||
until //(ALogicIdx >= ALogicEnd) or
|
||||
until (ALogicIdx >= FCurLineByteLen) or
|
||||
(ALogicIdx >= FCharWidthsLen) or ((FCharWidths[ALogicIdx] and PCWMask) <> 0);
|
||||
|
||||
pcw := GetCharWidthData(ALogicIdx);
|
||||
|
@ -354,7 +354,7 @@ type
|
||||
public
|
||||
constructor Create(AFoldView: TSynEditFoldedView);
|
||||
destructor Destroy; override;
|
||||
procedure SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx); override;
|
||||
procedure SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx; out AStartBytePos, ALineByteLen: Integer); override;
|
||||
function GetNextHighlighterToken(out ATokenInfo: TLazSynDisplayTokenInfo): Boolean; override;
|
||||
function GetLinesCount: Integer; override;
|
||||
|
||||
@ -718,7 +718,8 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TLazSynDisplayFold.SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx);
|
||||
procedure TLazSynDisplayFold.SetHighlighterTokensLine(ALine: TLineIdx; out
|
||||
ARealLine: TLineIdx; out AStartBytePos, ALineByteLen: Integer);
|
||||
begin
|
||||
FLineState := 0;
|
||||
CurrentTokenLine := ALine;
|
||||
@ -735,7 +736,7 @@ begin
|
||||
FFoldView.MarkupInfoHiddenCodeLine.SetFrameBoundsLog(1, MaxInt, 0);
|
||||
end;
|
||||
|
||||
inherited SetHighlighterTokensLine(FFoldView.InternViewToTextIndex(ALine), ARealLine);
|
||||
inherited SetHighlighterTokensLine(FFoldView.InternViewToTextIndex(ALine), ARealLine, AStartBytePos, ALineByteLen);
|
||||
end;
|
||||
|
||||
function TLazSynDisplayFold.GetNextHighlighterToken(out ATokenInfo: TLazSynDisplayTokenInfo): Boolean;
|
||||
|
@ -126,7 +126,7 @@ type
|
||||
FAtLineStart: Boolean;
|
||||
public
|
||||
constructor Create(ABuffer: TSynEditStringList);
|
||||
procedure SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx); override;
|
||||
procedure SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx; out AStartBytePos, ALineByteLen: Integer); override;
|
||||
function GetNextHighlighterToken(out ATokenInfo: TLazSynDisplayTokenInfo): Boolean; override;
|
||||
function GetDrawDividerInfo: TSynDividerDrawConfigSetting; override;
|
||||
function GetLinesCount: Integer; override;
|
||||
@ -363,10 +363,13 @@ begin
|
||||
FBuffer := ABuffer;
|
||||
end;
|
||||
|
||||
procedure TLazSynDisplayBuffer.SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx);
|
||||
procedure TLazSynDisplayBuffer.SetHighlighterTokensLine(ALine: TLineIdx; out
|
||||
ARealLine: TLineIdx; out AStartBytePos, ALineByteLen: Integer);
|
||||
begin
|
||||
CurrentTokenLine := ALine;
|
||||
ARealLine := ALine;
|
||||
AStartBytePos := 1;
|
||||
ALineByteLen := Length(FBuffer[ARealLine]);
|
||||
FAtLineStart := True;
|
||||
end;
|
||||
|
||||
|
@ -48,7 +48,7 @@ type
|
||||
public
|
||||
constructor Create(ATrimer: TSynEditStringTrimmingList);
|
||||
procedure FinishHighlighterTokens; override;
|
||||
procedure SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx); override;
|
||||
procedure SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx; out AStartBytePos, ALineByteLen: Integer); override;
|
||||
function GetNextHighlighterToken(out ATokenInfo: TLazSynDisplayTokenInfo): Boolean; override;
|
||||
end;
|
||||
|
||||
@ -321,11 +321,15 @@ begin
|
||||
FTempLineStringForPChar := '';
|
||||
end;
|
||||
|
||||
procedure TLazSynDisplayTrim.SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx);
|
||||
procedure TLazSynDisplayTrim.SetHighlighterTokensLine(ALine: TLineIdx; out
|
||||
ARealLine: TLineIdx; out AStartBytePos, ALineByteLen: Integer);
|
||||
begin
|
||||
CurrentTokenLine := ALine;
|
||||
FAtLineStart := True;
|
||||
inherited SetHighlighterTokensLine(ALine, ARealLine);
|
||||
if (CurrentTokenHighlighter = nil) and (FTrimer.Spaces(CurrentTokenLine) <> '') then begin
|
||||
ALineByteLen := Length(FTrimer[CurrentTokenLine]);
|
||||
end;
|
||||
inherited SetHighlighterTokensLine(ALine, ARealLine, AStartBytePos, ALineByteLen);
|
||||
end;
|
||||
|
||||
function TLazSynDisplayTrim.GetNextHighlighterToken(out ATokenInfo: TLazSynDisplayTokenInfo): Boolean;
|
||||
|
@ -79,7 +79,7 @@ type
|
||||
procedure SetLineMap(Index: Integer; AValue: Integer);
|
||||
procedure SetLineMapCount(AValue: integer);
|
||||
public
|
||||
procedure SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx); override;
|
||||
procedure SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx; out AStartBytePos, ALineByteLen: Integer); override;
|
||||
function GetLinesCount: Integer; override;
|
||||
function TextToViewIndex(AIndex: TLineIdx): TLineRange; override;
|
||||
function ViewToTextIndex(AIndex: TLineIdx): TLineIdx; override;
|
||||
@ -1206,11 +1206,11 @@ begin
|
||||
SetLength(FLineMap, AValue);
|
||||
end;
|
||||
|
||||
procedure TSourceLazSynTopInfoView.SetHighlighterTokensLine(ALine: TLineIdx; out
|
||||
ARealLine: TLineIdx);
|
||||
procedure TSourceLazSynTopInfoView.SetHighlighterTokensLine(ALine: TLineIdx;
|
||||
out ARealLine: TLineIdx; out AStartBytePos, ALineByteLen: Integer);
|
||||
begin
|
||||
CurrentTokenLine := ALine;
|
||||
inherited SetHighlighterTokensLine(FLineMap[ALine], ARealLine);
|
||||
inherited SetHighlighterTokensLine(FLineMap[ALine], ARealLine, AStartBytePos, ALineByteLen);
|
||||
end;
|
||||
|
||||
function TSourceLazSynTopInfoView.GetLinesCount: Integer;
|
||||
|
Loading…
Reference in New Issue
Block a user