mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-18 01:09:35 +02:00
SynEdit: Show fold indicator on last wrapped line.
This commit is contained in:
parent
269f304c2c
commit
c29347cfc7
@ -226,7 +226,7 @@ type
|
||||
property NextView: TLazSynDisplayView read FNextView write FNextView;
|
||||
public
|
||||
procedure InitHighlighterTokens(AHighlighter: TSynCustomHighlighter); virtual;
|
||||
procedure SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx; out AStartBytePos, AStartPhysPos, ALineByteLen: Integer); virtual;
|
||||
procedure SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx; out ASubLineIdx, AStartBytePos, AStartPhysPos, ALineByteLen: Integer); virtual;
|
||||
procedure FinishHighlighterTokens; virtual;
|
||||
function GetNextHighlighterToken(out ATokenInfo: TLazSynDisplayTokenInfo): Boolean; virtual;
|
||||
function GetLinesCount: Integer; virtual;
|
||||
@ -646,12 +646,12 @@ begin
|
||||
FNextView.InitHighlighterTokens(AHighlighter);
|
||||
end;
|
||||
|
||||
procedure TLazSynDisplayView.SetHighlighterTokensLine(ALine: TLineIdx; out
|
||||
ARealLine: TLineIdx; out AStartBytePos, AStartPhysPos, ALineByteLen: Integer);
|
||||
procedure TLazSynDisplayView.SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx;
|
||||
out ASubLineIdx, AStartBytePos, AStartPhysPos, ALineByteLen: Integer);
|
||||
begin
|
||||
//AStartBytePos := 1;
|
||||
if assigned(FNextView) then
|
||||
FNextView.SetHighlighterTokensLine(ALine, ARealLine, AStartBytePos, AStartPhysPos, ALineByteLen);
|
||||
FNextView.SetHighlighterTokensLine(ALine, ARealLine, ASubLineIdx, AStartBytePos, AStartPhysPos, ALineByteLen);
|
||||
end;
|
||||
|
||||
procedure TLazSynDisplayView.FinishHighlighterTokens;
|
||||
|
@ -327,9 +327,9 @@ end;
|
||||
procedure TLazSynPaintTokenBreaker.SetHighlighterTokensLine(ALine: TLineIdx; out
|
||||
ARealLine: TLineIdx);
|
||||
var
|
||||
LogLeftPos: Integer;
|
||||
LogLeftPos, ASubLineIdx: Integer;
|
||||
begin
|
||||
FDisplayView.SetHighlighterTokensLine(ALine, ARealLine, LogLeftPos, FCurLinePhysStart, FCurLineByteLen);
|
||||
FDisplayView.SetHighlighterTokensLine(ALine, ARealLine, ASubLineIdx, LogLeftPos, FCurLinePhysStart, FCurLineByteLen);
|
||||
if FLinesView.LogPhysConvertor.CurrentLine = ARealLine then begin
|
||||
if not FCharWidthsFromConverter then begin
|
||||
FCharWidthsFromConverter := True;
|
||||
|
@ -373,7 +373,7 @@ type
|
||||
public
|
||||
constructor Create(AFoldView: TSynEditFoldedView);
|
||||
destructor Destroy; override;
|
||||
procedure SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx; out AStartBytePos, AStartPhysPos, ALineByteLen: Integer); override;
|
||||
procedure SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx; out ASubLineIdx, AStartBytePos, AStartPhysPos, ALineByteLen: Integer); override;
|
||||
function GetNextHighlighterToken(out ATokenInfo: TLazSynDisplayTokenInfo): Boolean; override;
|
||||
function GetLinesCount: Integer; override;
|
||||
|
||||
@ -735,12 +735,15 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TLazSynDisplayFold.SetHighlighterTokensLine(ALine: TLineIdx; out
|
||||
ARealLine: TLineIdx; out AStartBytePos, AStartPhysPos, ALineByteLen: Integer);
|
||||
procedure TLazSynDisplayFold.SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx;
|
||||
out ASubLineIdx, AStartBytePos, AStartPhysPos, ALineByteLen: Integer);
|
||||
begin
|
||||
FLineState := 0;
|
||||
CurrentTokenLine := ALine;
|
||||
FLineFlags := FFoldView.FoldType[CurrentTokenLine + 1 - FFoldView.TopViewPos] * [cfCollapsedFold, cfCollapsedHide];
|
||||
|
||||
inherited SetHighlighterTokensLine(FFoldView.InternViewToTextIndex(ALine), ARealLine, ASubLineIdx, AStartBytePos, AStartPhysPos, ALineByteLen);
|
||||
|
||||
FLineFlags := FFoldView.FoldType[CurrentTokenLine - ASubLineIdx + 1 - FFoldView.TopViewPos] * [cfCollapsedFold, cfCollapsedHide];
|
||||
FLineFlags2 := FLineFlags;
|
||||
|
||||
if not FFoldView.MarkupInfoFoldedCodeLine.IsEnabled then
|
||||
@ -752,8 +755,6 @@ begin
|
||||
FFoldView.MarkupInfoFoldedCodeLine.SetFrameBoundsLog(1, MaxInt, 0);
|
||||
FFoldView.MarkupInfoHiddenCodeLine.SetFrameBoundsLog(1, MaxInt, 0);
|
||||
end;
|
||||
|
||||
inherited SetHighlighterTokensLine(FFoldView.InternViewToTextIndex(ALine), ARealLine, AStartBytePos, AStartPhysPos, ALineByteLen);
|
||||
end;
|
||||
|
||||
function TLazSynDisplayFold.GetNextHighlighterToken(out ATokenInfo: TLazSynDisplayTokenInfo): Boolean;
|
||||
@ -773,7 +774,8 @@ begin
|
||||
case FLineState of
|
||||
LSTATE_BOL, LSTATE_TEXT: begin
|
||||
Result := inherited GetNextHighlighterToken(ATokenInfo);
|
||||
if ( (not Result) or (ATokenInfo.TokenStart = nil)) and (FLineFlags <> [])
|
||||
if (ATokenInfo.TokenOrigin = dtoAfterText) and
|
||||
( (not Result) or (ATokenInfo.TokenStart = nil)) and (FLineFlags <> [])
|
||||
then begin
|
||||
inc(FLineState, 2); // LSTATE_BOL_GAP(2), if was at bol // LSTATE_GAP(3) otherwise
|
||||
ATokenInfo.TokenStart := PChar(MarkSpaces);
|
||||
|
@ -126,7 +126,7 @@ type
|
||||
FAtLineStart: Boolean;
|
||||
public
|
||||
constructor Create(ABuffer: TSynEditStringList);
|
||||
procedure SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx; out AStartBytePos, AStartPhysPos, ALineByteLen: Integer); override;
|
||||
procedure SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx; out ASubLineIdx, AStartBytePos, AStartPhysPos, ALineByteLen: Integer); override;
|
||||
function GetNextHighlighterToken(out ATokenInfo: TLazSynDisplayTokenInfo): Boolean; override;
|
||||
function GetDrawDividerInfo: TSynDividerDrawConfigSetting; override;
|
||||
function GetLinesCount: Integer; override;
|
||||
@ -386,10 +386,11 @@ begin
|
||||
end;
|
||||
|
||||
procedure TLazSynDisplayBuffer.SetHighlighterTokensLine(ALine: TLineIdx; out
|
||||
ARealLine: TLineIdx; out AStartBytePos, AStartPhysPos, ALineByteLen: Integer);
|
||||
ARealLine: TLineIdx; out ASubLineIdx, AStartBytePos, AStartPhysPos, ALineByteLen: Integer);
|
||||
begin
|
||||
CurrentTokenLine := ALine;
|
||||
ARealLine := ALine;
|
||||
ASubLineIdx := 0;
|
||||
AStartBytePos := 1;
|
||||
AStartPhysPos := 1;
|
||||
ALineByteLen := Length(FBuffer[ARealLine]);
|
||||
|
@ -47,7 +47,7 @@ type
|
||||
public
|
||||
constructor Create(ATrimer: TSynEditStringTrimmingList);
|
||||
procedure FinishHighlighterTokens; override;
|
||||
procedure SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx; out AStartBytePos, AStartPhysPos, ALineByteLen: Integer); override;
|
||||
procedure SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx; out ASubLineIdx, AStartBytePos, AStartPhysPos, ALineByteLen: Integer); override;
|
||||
function GetNextHighlighterToken(out ATokenInfo: TLazSynDisplayTokenInfo): Boolean; override;
|
||||
end;
|
||||
|
||||
@ -321,14 +321,14 @@ begin
|
||||
end;
|
||||
|
||||
procedure TLazSynDisplayTrim.SetHighlighterTokensLine(ALine: TLineIdx; out
|
||||
ARealLine: TLineIdx; out AStartBytePos, AStartPhysPos, ALineByteLen: Integer);
|
||||
ARealLine: TLineIdx; out ASubLineIdx, AStartBytePos, AStartPhysPos, ALineByteLen: Integer);
|
||||
begin
|
||||
CurrentTokenLine := ALine;
|
||||
FAtLineStart := True;
|
||||
if (CurrentTokenHighlighter = nil) and (FTrimer.Spaces(CurrentTokenLine) <> '') then begin
|
||||
ALineByteLen := Length(FTrimer[CurrentTokenLine]);
|
||||
end;
|
||||
inherited SetHighlighterTokensLine(ALine, ARealLine, AStartBytePos, AStartPhysPos, ALineByteLen);
|
||||
inherited SetHighlighterTokensLine(ALine, ARealLine, ASubLineIdx, AStartBytePos, AStartPhysPos, ALineByteLen);
|
||||
ALineByteLen := ALineByteLen + length(FTrimer.Spaces(ALine));
|
||||
end;
|
||||
|
||||
|
@ -239,7 +239,7 @@ type
|
||||
public
|
||||
constructor Create(AWrappedView: TSynEditLineMappingView);
|
||||
procedure SetHighlighterTokensLine(AWrappedLine: TLineIdx; out
|
||||
ARealLine: TLineIdx; out AStartBytePos, AStartPhysPos, ALineByteLen: Integer); override;
|
||||
ARealLine: TLineIdx; out ASubLineIdx, AStartBytePos, AStartPhysPos, ALineByteLen: Integer); override;
|
||||
// function GetNextHighlighterToken(out ATokenInfo: TLazSynDisplayTokenInfo): Boolean; override;
|
||||
procedure FinishHighlighterTokens; override;
|
||||
function TextToViewIndex(ATextIndex: TLineIdx): TLineRange; override;
|
||||
@ -1288,7 +1288,7 @@ begin
|
||||
end;
|
||||
|
||||
procedure TLazSynDisplayLineMapping.SetHighlighterTokensLine(
|
||||
AWrappedLine: TLineIdx; out ARealLine: TLineIdx; out AStartBytePos,
|
||||
AWrappedLine: TLineIdx; out ARealLine: TLineIdx; out ASubLineIdx, AStartBytePos,
|
||||
AStartPhysPos, ALineByteLen: Integer);
|
||||
var
|
||||
RealIdx: IntIdx;
|
||||
@ -1307,7 +1307,8 @@ begin
|
||||
FCurrentWrapSubline := 0;
|
||||
end;
|
||||
|
||||
inherited SetHighlighterTokensLine(RealIdx, ARealLine, AStartBytePos, AStartPhysPos, ALineByteLen);
|
||||
inherited SetHighlighterTokensLine(RealIdx, ARealLine, ASubLineIdx, AStartBytePos, AStartPhysPos, ALineByteLen);
|
||||
ASubLineIdx := FCurrentWrapSubline;
|
||||
end;
|
||||
|
||||
procedure TLazSynDisplayLineMapping.FinishHighlighterTokens;
|
||||
|
@ -188,7 +188,7 @@ type
|
||||
constructor Create(AWrappedView: TSynEditLineMappingView; AWrapPlugin: TLazSynEditLineWrapPlugin);
|
||||
//destructor Destroy; override;
|
||||
procedure SetHighlighterTokensLine(AWrappedLine: TLineIdx; out
|
||||
ARealLine: TLineIdx; out AStartBytePos, AStartPhysPos, ALineByteLen: Integer); override;
|
||||
ARealLine: TLineIdx; out ASubLineIdx, AStartBytePos, AStartPhysPos, ALineByteLen: Integer); override;
|
||||
function GetNextHighlighterToken(out ATokenInfo: TLazSynDisplayTokenInfo): Boolean; override;
|
||||
end;
|
||||
|
||||
@ -1484,7 +1484,7 @@ begin
|
||||
end;
|
||||
|
||||
procedure TLazSynDisplayWordWrap.SetHighlighterTokensLine(
|
||||
AWrappedLine: TLineIdx; out ARealLine: TLineIdx; out AStartBytePos,
|
||||
AWrappedLine: TLineIdx; out ARealLine: TLineIdx; out ASubLineIdx, AStartBytePos,
|
||||
AStartPhysPos, ALineByteLen: Integer);
|
||||
var
|
||||
IsNext: Boolean;
|
||||
@ -1496,7 +1496,7 @@ begin
|
||||
IsNext := (AWrappedLine = FCurWrappedLine + 1) and (FCurWrappedLine >= 0);
|
||||
PrevSub := FCurrentWrapSubline;
|
||||
|
||||
inherited SetHighlighterTokensLine(AWrappedLine, ARealLine, AStartBytePos, AStartPhysPos, FCurRealLineByteLen);
|
||||
inherited SetHighlighterTokensLine(AWrappedLine, ARealLine, ASubLineIdx, AStartBytePos, AStartPhysPos, FCurRealLineByteLen);
|
||||
|
||||
LineTxt := FLineMappingView.NextLines.Strings[ARealLine];
|
||||
FLineMappingView.LogPhysConvertor.CurrentLine := ARealLine;
|
||||
|
@ -1749,13 +1749,13 @@ procedure TTestWordWrapPluginBase.InternalCheckLine(AName: String;
|
||||
NoTrim: Boolean);
|
||||
var
|
||||
gotRealLine: TLineIdx;
|
||||
gotStartPos, GotLineLen, gotStartPhys: Integer;
|
||||
gotStartPos, GotLineLen, gotStartPhys, gotSubLineIdx: Integer;
|
||||
gotTokenOk: Boolean;
|
||||
gotToken: TLazSynDisplayTokenInfo;
|
||||
gotText: PChar;
|
||||
s: String;
|
||||
begin
|
||||
dsp.SetHighlighterTokensLine(ALine, gotRealLine, gotStartPos, gotStartPhys, GotLineLen);
|
||||
dsp.SetHighlighterTokensLine(ALine, gotRealLine, gotSubLineIdx, gotStartPos, gotStartPhys, GotLineLen);
|
||||
gotTokenOk := dsp.GetNextHighlighterToken(gotToken);
|
||||
if gotTokenOk then
|
||||
gotText := gotToken.TokenStart
|
||||
@ -1806,7 +1806,7 @@ procedure TTestWordWrapPluginBase.CheckLines(AName: String;
|
||||
var
|
||||
v: TSynEditStringsLinked;
|
||||
dsp: TLazSynDisplayView;
|
||||
i, gotStartPos, GotLineLen, gotStartPhys: Integer;
|
||||
i, gotStartPos, GotLineLen, gotStartPhys, gotSubLineIdx: Integer;
|
||||
gotTokenOk: Boolean;
|
||||
gotToken: TLazSynDisplayTokenInfo;
|
||||
s: String;
|
||||
@ -1823,7 +1823,7 @@ begin
|
||||
dsp.FinishHighlighterTokens;
|
||||
dsp.InitHighlighterTokens(nil);
|
||||
for i := 0 to Length(AExpTextStart)-1 do begin
|
||||
dsp.SetHighlighterTokensLine(AStartLine+i, gotRealLine, gotStartPos, gotStartPhys, GotLineLen);
|
||||
dsp.SetHighlighterTokensLine(AStartLine+i, gotRealLine, gotSubLineIdx, gotStartPos, gotStartPhys, GotLineLen);
|
||||
s := '';
|
||||
while dsp.GetNextHighlighterToken(gotToken) and (gotToken.TokenLength > 0) do
|
||||
s := s + copy(gotToken.TokenStart, 1, gotToken.TokenLength);
|
||||
|
@ -82,7 +82,7 @@ type
|
||||
procedure SetLineMap(Index: Integer; AValue: Integer);
|
||||
procedure SetLineMapCount(AValue: integer);
|
||||
public
|
||||
procedure SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx; out AStartBytePos, AStartPhysPos, ALineByteLen: Integer); override;
|
||||
procedure SetHighlighterTokensLine(ALine: TLineIdx; out ARealLine: TLineIdx; out ASubLineIdx, AStartBytePos, AStartPhysPos, ALineByteLen: Integer); override;
|
||||
function GetLinesCount: Integer; override;
|
||||
function TextToViewIndex(AIndex: TLineIdx): TLineRange; override;
|
||||
function ViewToTextIndex(AIndex: TLineIdx): TLineIdx; override;
|
||||
@ -1319,10 +1319,10 @@ begin
|
||||
end;
|
||||
|
||||
procedure TSourceLazSynTopInfoView.SetHighlighterTokensLine(ALine: TLineIdx;
|
||||
out ARealLine: TLineIdx; out AStartBytePos, AStartPhysPos, ALineByteLen: Integer);
|
||||
out ARealLine: TLineIdx; out ASubLineIdx, AStartBytePos, AStartPhysPos, ALineByteLen: Integer);
|
||||
begin
|
||||
CurrentTokenLine := ALine;
|
||||
inherited SetHighlighterTokensLine(FLineMap[ALine], ARealLine, AStartBytePos, AStartPhysPos, ALineByteLen);
|
||||
inherited SetHighlighterTokensLine(FLineMap[ALine], ARealLine, ASubLineIdx, AStartBytePos, AStartPhysPos, ALineByteLen);
|
||||
end;
|
||||
|
||||
function TSourceLazSynTopInfoView.GetLinesCount: Integer;
|
||||
|
Loading…
Reference in New Issue
Block a user