mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-05 17:52:36 +02:00
SynEdit: HighLighter, move count for nested and folded both into base class (prepare re-use by other HL) by x2nie
git-svn-id: trunk@52162 -
This commit is contained in:
parent
7b63a5d48d
commit
af42b4185f
@ -255,6 +255,7 @@ type
|
|||||||
|
|
||||||
TSynCustomHighlighterRange = class
|
TSynCustomHighlighterRange = class
|
||||||
private
|
private
|
||||||
|
// TODO: either reduce to one level, or create subclass for 2nd level
|
||||||
FCodeFoldStackSize: integer; // EndLevel
|
FCodeFoldStackSize: integer; // EndLevel
|
||||||
FNestFoldStackSize: integer; // EndLevel
|
FNestFoldStackSize: integer; // EndLevel
|
||||||
FMinimumCodeFoldBlockLevel: integer;
|
FMinimumCodeFoldBlockLevel: integer;
|
||||||
@ -278,7 +279,7 @@ type
|
|||||||
property CodeFoldStackSize: integer read FCodeFoldStackSize; // excl disabled, only IncreaseLevel
|
property CodeFoldStackSize: integer read FCodeFoldStackSize; // excl disabled, only IncreaseLevel
|
||||||
property MinimumCodeFoldBlockLevel: integer
|
property MinimumCodeFoldBlockLevel: integer
|
||||||
read FMinimumCodeFoldBlockLevel write FMinimumCodeFoldBlockLevel;
|
read FMinimumCodeFoldBlockLevel write FMinimumCodeFoldBlockLevel;
|
||||||
property NestFoldStackSize: integer read FCodeFoldStackSize; // all, incl disabled (not IncreaseLevel)
|
property NestFoldStackSize: integer read FNestFoldStackSize; // all, incl disabled (not IncreaseLevel)
|
||||||
property MinimumNestFoldBlockLevel: integer
|
property MinimumNestFoldBlockLevel: integer
|
||||||
read FMinimumNestFoldBlockLevel; // write FMinimumNestFoldBlockLevel;
|
read FMinimumNestFoldBlockLevel; // write FMinimumNestFoldBlockLevel;
|
||||||
property Top: TSynCustomCodeFoldBlock read FTop;
|
property Top: TSynCustomCodeFoldBlock read FTop;
|
||||||
@ -939,6 +940,7 @@ procedure TSynCustomFoldHighlighter.SetLine(const NewValue: String;
|
|||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
FCodeFoldRange.MinimumCodeFoldBlockLevel := FCodeFoldRange.FCodeFoldStackSize;
|
FCodeFoldRange.MinimumCodeFoldBlockLevel := FCodeFoldRange.FCodeFoldStackSize;
|
||||||
|
FCodeFoldRange.FMinimumNestFoldBlockLevel := FCodeFoldRange.NestFoldStackSize;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TSynCustomFoldHighlighter.DoCurrentLinesChanged;
|
procedure TSynCustomFoldHighlighter.DoCurrentLinesChanged;
|
||||||
@ -1486,6 +1488,13 @@ begin
|
|||||||
else if Pointer(FTop) > Pointer(Range.FTop) then
|
else if Pointer(FTop) > Pointer(Range.FTop) then
|
||||||
Result:= 1
|
Result:= 1
|
||||||
else
|
else
|
||||||
|
Result := FMinimumNestFoldBlockLevel - Range.FMinimumNestFoldBlockLevel;
|
||||||
|
if Result <> 0 then
|
||||||
|
exit;
|
||||||
|
Result := FNestFoldStackSize - Range.FNestFoldStackSize;
|
||||||
|
if Result <> 0 then
|
||||||
|
exit;
|
||||||
|
|
||||||
Result := FMinimumCodeFoldBlockLevel - Range.FMinimumCodeFoldBlockLevel;
|
Result := FMinimumCodeFoldBlockLevel - Range.FMinimumCodeFoldBlockLevel;
|
||||||
if Result <> 0 then
|
if Result <> 0 then
|
||||||
exit;
|
exit;
|
||||||
@ -1536,7 +1545,9 @@ procedure TSynCustomHighlighterRange.Clear;
|
|||||||
begin
|
begin
|
||||||
FRangeType:=nil;
|
FRangeType:=nil;
|
||||||
FCodeFoldStackSize := 0;
|
FCodeFoldStackSize := 0;
|
||||||
|
FNestFoldStackSize := 0;
|
||||||
FMinimumCodeFoldBlockLevel := 0;
|
FMinimumCodeFoldBlockLevel := 0;
|
||||||
|
FMinimumNestFoldBlockLevel:= 0;
|
||||||
FTop:=nil;
|
FTop:=nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1546,12 +1557,16 @@ begin
|
|||||||
FTop := Src.FTop;
|
FTop := Src.FTop;
|
||||||
FCodeFoldStackSize := Src.FCodeFoldStackSize;
|
FCodeFoldStackSize := Src.FCodeFoldStackSize;
|
||||||
FMinimumCodeFoldBlockLevel := Src.FMinimumCodeFoldBlockLevel;
|
FMinimumCodeFoldBlockLevel := Src.FMinimumCodeFoldBlockLevel;
|
||||||
|
FNestFoldStackSize := Src.FNestFoldStackSize;
|
||||||
|
FMinimumNestFoldBlockLevel := Src.FMinimumNestFoldBlockLevel;
|
||||||
FRangeType := Src.FRangeType;
|
FRangeType := Src.FRangeType;
|
||||||
end
|
end
|
||||||
else begin
|
else begin
|
||||||
FTop := nil;
|
FTop := nil;
|
||||||
FCodeFoldStackSize := 0;
|
FCodeFoldStackSize := 0;
|
||||||
|
FNestFoldStackSize := 0;
|
||||||
FMinimumCodeFoldBlockLevel := 0;
|
FMinimumCodeFoldBlockLevel := 0;
|
||||||
|
FMinimumNestFoldBlockLevel := 0;
|
||||||
FRangeType := nil;
|
FRangeType := nil;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -259,16 +259,11 @@ type
|
|||||||
FMode: TPascalCompilerMode;
|
FMode: TPascalCompilerMode;
|
||||||
FBracketNestLevel : Integer;
|
FBracketNestLevel : Integer;
|
||||||
FLastLineCodeFoldLevelFix: integer;
|
FLastLineCodeFoldLevelFix: integer;
|
||||||
FPasFoldEndLevel: Smallint;
|
|
||||||
FPasFoldFixLevel: Smallint;
|
FPasFoldFixLevel: Smallint;
|
||||||
FPasFoldMinLevel: Smallint;
|
|
||||||
public
|
public
|
||||||
procedure Clear; override;
|
procedure Clear; override;
|
||||||
function Compare(Range: TSynCustomHighlighterRange): integer; override;
|
function Compare(Range: TSynCustomHighlighterRange): integer; override;
|
||||||
procedure Assign(Src: TSynCustomHighlighterRange); override;
|
procedure Assign(Src: TSynCustomHighlighterRange); override;
|
||||||
function Add(ABlockType: Pointer = nil; IncreaseLevel: Boolean = True):
|
|
||||||
TSynCustomCodeFoldBlock; override;
|
|
||||||
procedure Pop(DecreaseLevel: Boolean = True); override;
|
|
||||||
function MaxFoldLevel: Integer; override;
|
function MaxFoldLevel: Integer; override;
|
||||||
procedure IncBracketNestLevel;
|
procedure IncBracketNestLevel;
|
||||||
procedure DecBracketNestLevel;
|
procedure DecBracketNestLevel;
|
||||||
@ -278,14 +273,7 @@ type
|
|||||||
property BracketNestLevel: integer read FBracketNestLevel write FBracketNestLevel;
|
property BracketNestLevel: integer read FBracketNestLevel write FBracketNestLevel;
|
||||||
property LastLineCodeFoldLevelFix: integer
|
property LastLineCodeFoldLevelFix: integer
|
||||||
read FLastLineCodeFoldLevelFix write FLastLineCodeFoldLevelFix;
|
read FLastLineCodeFoldLevelFix write FLastLineCodeFoldLevelFix;
|
||||||
property PasFoldEndLevel: Smallint read FPasFoldEndLevel write FPasFoldEndLevel;
|
|
||||||
property PasFoldFixLevel: Smallint read FPasFoldFixLevel write FPasFoldFixLevel;
|
property PasFoldFixLevel: Smallint read FPasFoldFixLevel write FPasFoldFixLevel;
|
||||||
property PasFoldMinLevel: Smallint read FPasFoldMinLevel write FPasFoldMinLevel;
|
|
||||||
// * foldable nodes <> All nodes (pascas , not ifdef/region) *
|
|
||||||
// PasFoldEndLevel <> CodeFoldStackSize
|
|
||||||
// PasFoldMinLevel <> MinimumCodeFoldBlockLevel
|
|
||||||
// LastLineCodeFoldLevelFix <> PasFoldFixLevel
|
|
||||||
// DecLastLineCodeFoldLevelFix <> DecLastLinePasFoldFix
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TProcTableProc = procedure of object;
|
TProcTableProc = procedure of object;
|
||||||
@ -300,7 +288,7 @@ type
|
|||||||
fAsmStart: Boolean;
|
fAsmStart: Boolean;
|
||||||
FExtendedKeywordsMode: Boolean;
|
FExtendedKeywordsMode: Boolean;
|
||||||
FNestedComments: boolean;
|
FNestedComments: boolean;
|
||||||
FStartCodeFoldBlockLevel: integer;
|
FStartCodeFoldBlockLevel: integer; // TODO: rename FStartNestedFoldBlockLevel
|
||||||
FPasStartLevel: Smallint;
|
FPasStartLevel: Smallint;
|
||||||
fRange: TRangeStates;
|
fRange: TRangeStates;
|
||||||
FOldRange: TRangeStates;
|
FOldRange: TRangeStates;
|
||||||
@ -1094,7 +1082,7 @@ begin
|
|||||||
if TopPascalCodeFoldBlockType in [cfbtProcedure]
|
if TopPascalCodeFoldBlockType in [cfbtProcedure]
|
||||||
then StartPascalCodeFoldBlock(cfbtTopBeginEnd)
|
then StartPascalCodeFoldBlock(cfbtTopBeginEnd)
|
||||||
else StartPascalCodeFoldBlock(cfbtBeginEnd);
|
else StartPascalCodeFoldBlock(cfbtBeginEnd);
|
||||||
//debugln('TSynPasSyn.Func37 BEGIN ',dbgs(ord(TopPascalCodeFoldBlockType)),' LineNumber=',dbgs(fLineNumber),' ',dbgs(MinimumCodeFoldBlockLevel),' ',dbgs(CurrentCodeFoldBlockLevel));
|
//debugln('TSynPasSyn.Func37 BEGIN ',dbgs(ord(TopPascalCodeFoldBlockType)),' LineNumber=',dbgs(fLineNumber),' ',dbgs(MinimumNestFoldBlockLevel),' ',dbgs(CurrentCodeFoldBlockLevel));
|
||||||
end else
|
end else
|
||||||
if FExtendedKeywordsMode and KeyComp('Break') then
|
if FExtendedKeywordsMode and KeyComp('Break') then
|
||||||
Result := tkKey
|
Result := tkKey
|
||||||
@ -2378,11 +2366,10 @@ begin
|
|||||||
fLine:=PChar(Pointer(fLineStr));
|
fLine:=PChar(Pointer(fLineStr));
|
||||||
Run := 0;
|
Run := 0;
|
||||||
Inherited SetLine(NewValue,LineNumber);
|
Inherited SetLine(NewValue,LineNumber);
|
||||||
FStartCodeFoldBlockLevel := PasCodeFoldRange.MinimumCodeFoldBlockLevel;
|
|
||||||
PasCodeFoldRange.LastLineCodeFoldLevelFix := 0;
|
PasCodeFoldRange.LastLineCodeFoldLevelFix := 0;
|
||||||
PasCodeFoldRange.PasFoldFixLevel := 0;
|
PasCodeFoldRange.PasFoldFixLevel := 0;
|
||||||
PasCodeFoldRange.PasFoldMinLevel := PasCodeFoldRange.PasFoldEndLevel;
|
FStartCodeFoldBlockLevel := PasCodeFoldRange.MinimumNestFoldBlockLevel;
|
||||||
FPasStartLevel := PasCodeFoldRange.PasFoldMinLevel;
|
FPasStartLevel := PasCodeFoldRange.MinimumCodeFoldBlockLevel;
|
||||||
FSynPasRangeInfo.MinLevelIfDef := FSynPasRangeInfo.EndLevelIfDef;
|
FSynPasRangeInfo.MinLevelIfDef := FSynPasRangeInfo.EndLevelIfDef;
|
||||||
FSynPasRangeInfo.MinLevelRegion := FSynPasRangeInfo.EndLevelRegion;
|
FSynPasRangeInfo.MinLevelRegion := FSynPasRangeInfo.EndLevelRegion;
|
||||||
fLineNumber := LineNumber;
|
fLineNumber := LineNumber;
|
||||||
@ -3295,12 +3282,12 @@ begin
|
|||||||
if (r <> nil) and (r <> NullRange) then begin
|
if (r <> nil) and (r <> NullRange) then begin
|
||||||
r2 := TSynPasSynRange(CurrentRanges[ALineIndex + 1]);
|
r2 := TSynPasSynRange(CurrentRanges[ALineIndex + 1]);
|
||||||
if sfbIncludeDisabled in AFilter.Flags then begin
|
if sfbIncludeDisabled in AFilter.Flags then begin
|
||||||
Result := TSynPasSynRange(r).CodeFoldStackSize;
|
Result := TSynPasSynRange(r).NestFoldStackSize;
|
||||||
if (r2 <> nil) and (r2 <> NullRange) then
|
if (r2 <> nil) and (r2 <> NullRange) then
|
||||||
Result := Result + TSynPasSynRange(r2).LastLineCodeFoldLevelFix;
|
Result := Result + TSynPasSynRange(r2).LastLineCodeFoldLevelFix;
|
||||||
end
|
end
|
||||||
else begin
|
else begin
|
||||||
Result := TSynPasSynRange(r).PasFoldEndLevel;
|
Result := TSynPasSynRange(r).CodeFoldStackSize;
|
||||||
if (r2 <> nil) and (r2 <> NullRange) then
|
if (r2 <> nil) and (r2 <> NullRange) then
|
||||||
Result := Result + TSynPasSynRange(r2).PasFoldFixLevel;
|
Result := Result + TSynPasSynRange(r2).PasFoldFixLevel;
|
||||||
end;
|
end;
|
||||||
@ -3347,18 +3334,18 @@ begin
|
|||||||
if (r <> nil) and (r <> NullRange) then begin
|
if (r <> nil) and (r <> NullRange) then begin
|
||||||
r2 := TSynPasSynRange(CurrentRanges[ALineIndex + 1]);
|
r2 := TSynPasSynRange(CurrentRanges[ALineIndex + 1]);
|
||||||
if sfbIncludeDisabled in AFilter.Flags then begin
|
if sfbIncludeDisabled in AFilter.Flags then begin
|
||||||
Result := TSynPasSynRange(r).CodeFoldStackSize;
|
Result := TSynPasSynRange(r).NestFoldStackSize;
|
||||||
if (r2 <> nil) and (r2 <> NullRange) then
|
if (r2 <> nil) and (r2 <> NullRange) then
|
||||||
Result := Result + TSynPasSynRange(r2).LastLineCodeFoldLevelFix;
|
Result := Result + TSynPasSynRange(r2).LastLineCodeFoldLevelFix;
|
||||||
// now Result = FoldBlockEndLevel
|
// now Result = FoldBlockEndLevel
|
||||||
Result := Min(Result, TSynPasSynRange(r).MinimumCodeFoldBlockLevel);
|
Result := Min(Result, TSynPasSynRange(r).MinimumNestFoldBlockLevel);
|
||||||
end
|
end
|
||||||
else begin
|
else begin
|
||||||
Result := TSynPasSynRange(r).PasFoldEndLevel;
|
Result := TSynPasSynRange(r).CodeFoldStackSize;
|
||||||
if (r2 <> nil) and (r2 <> NullRange) then
|
if (r2 <> nil) and (r2 <> NullRange) then
|
||||||
Result := Result + TSynPasSynRange(r2).PasFoldFixLevel;
|
Result := Result + TSynPasSynRange(r2).PasFoldFixLevel;
|
||||||
// now Result = FoldBlockEndLevel
|
// now Result = FoldBlockEndLevel
|
||||||
Result := Min(Result, TSynPasSynRange(r).PasFoldMinLevel);
|
Result := Min(Result, TSynPasSynRange(r).MinimumCodeFoldBlockLevel);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -3392,12 +3379,12 @@ begin
|
|||||||
r := CurrentRanges[ALineIndex];
|
r := CurrentRanges[ALineIndex];
|
||||||
if (r <> nil) and (r <> NullRange) then begin
|
if (r <> nil) and (r <> NullRange) then begin
|
||||||
r2 := TSynPasSynRange(CurrentRanges[ALineIndex + 1]);
|
r2 := TSynPasSynRange(CurrentRanges[ALineIndex + 1]);
|
||||||
c := TSynPasSynRange(r).PasFoldEndLevel;
|
c := TSynPasSynRange(r).CodeFoldStackSize;
|
||||||
if (r2 <> nil) and (r2 <> NullRange) then
|
if (r2 <> nil) and (r2 <> NullRange) then
|
||||||
c := c + TSynPasSynRange(r2).PasFoldFixLevel;
|
c := c + TSynPasSynRange(r2).PasFoldFixLevel;
|
||||||
|
|
||||||
if ANestIndex < c then begin
|
if ANestIndex < c then begin
|
||||||
c := TSynPasSynRange(r).CodeFoldStackSize - 1 - ANestIndex;
|
c := TSynPasSynRange(r).NestFoldStackSize - 1 - ANestIndex;
|
||||||
Fold := TSynPasSynRange(r).Top;
|
Fold := TSynPasSynRange(r).Top;
|
||||||
while (Fold <> nil) and
|
while (Fold <> nil) and
|
||||||
( (c > 0) or (Fold.BlockType >= CountPascalCodeFoldBlockOffset) )
|
( (c > 0) or (Fold.BlockType >= CountPascalCodeFoldBlockOffset) )
|
||||||
@ -3422,12 +3409,12 @@ begin
|
|||||||
r := CurrentRanges[ALineIndex];
|
r := CurrentRanges[ALineIndex];
|
||||||
if (r <> nil) and (r <> NullRange) then begin
|
if (r <> nil) and (r <> NullRange) then begin
|
||||||
r2 := TSynPasSynRange(CurrentRanges[ALineIndex + 1]);
|
r2 := TSynPasSynRange(CurrentRanges[ALineIndex + 1]);
|
||||||
c := TSynPasSynRange(r).CodeFoldStackSize;
|
c := TSynPasSynRange(r).NestFoldStackSize;
|
||||||
if (r2 <> nil) and (r2 <> NullRange) then
|
if (r2 <> nil) and (r2 <> NullRange) then
|
||||||
c := c + TSynPasSynRange(r2).LastLineCodeFoldLevelFix;
|
c := c + TSynPasSynRange(r2).LastLineCodeFoldLevelFix;
|
||||||
|
|
||||||
if ANestIndex < c then begin
|
if ANestIndex < c then begin
|
||||||
c := TSynPasSynRange(r).CodeFoldStackSize - 1 - ANestIndex;
|
c := TSynPasSynRange(r).NestFoldStackSize - 1 - ANestIndex;
|
||||||
Fold := TSynPasSynRange(r).Top;
|
Fold := TSynPasSynRange(r).Top;
|
||||||
while (Fold <> nil) and (c > 0) do begin
|
while (Fold <> nil) and (c > 0) do begin
|
||||||
Fold := Fold.Parent;
|
Fold := Fold.Parent;
|
||||||
@ -3597,13 +3584,13 @@ begin
|
|||||||
begin
|
begin
|
||||||
node.FoldGroup := FOLDGROUP_PASCAL;
|
node.FoldGroup := FOLDGROUP_PASCAL;
|
||||||
if AIsFold then begin
|
if AIsFold then begin
|
||||||
Node.FoldLvlStart := PasCodeFoldRange.PasFoldEndLevel;
|
Node.FoldLvlStart := PasCodeFoldRange.CodeFoldStackSize;
|
||||||
Node.NestLvlStart := PasCodeFoldRange.CodeFoldStackSize;
|
Node.NestLvlStart := PasCodeFoldRange.NestFoldStackSize;
|
||||||
OneLine := (EndOffs < 0) and (Node.FoldLvlStart > PasCodeFoldRange.PasFoldMinLevel); // MinimumCodeFoldBlockLevel);
|
OneLine := (EndOffs < 0) and (Node.FoldLvlStart > PasCodeFoldRange.MinimumCodeFoldBlockLevel); // MinimumNestFoldBlockLevel);
|
||||||
end else begin
|
end else begin
|
||||||
Node.FoldLvlStart := PasCodeFoldRange.CodeFoldStackSize; // Todo: zero?
|
Node.FoldLvlStart := PasCodeFoldRange.NestFoldStackSize; // Todo: zero?
|
||||||
Node.NestLvlStart := PasCodeFoldRange.CodeFoldStackSize;
|
Node.NestLvlStart := PasCodeFoldRange.NestFoldStackSize;
|
||||||
OneLine := (EndOffs < 0) and (Node.FoldLvlStart > PasCodeFoldRange.MinimumCodeFoldBlockLevel);
|
OneLine := (EndOffs < 0) and (Node.FoldLvlStart > PasCodeFoldRange.MinimumNestFoldBlockLevel);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -3852,7 +3839,7 @@ begin
|
|||||||
EndPascalCodeFoldBlock;
|
EndPascalCodeFoldBlock;
|
||||||
if FAtLineStart then begin
|
if FAtLineStart then begin
|
||||||
// If we are not at linestart, new folds could have been opened => handle as normal close
|
// If we are not at linestart, new folds could have been opened => handle as normal close
|
||||||
if (PasCodeFoldRange.CodeFoldStackSize < FStartCodeFoldBlockLevel) and
|
if (PasCodeFoldRange.NestFoldStackSize < FStartCodeFoldBlockLevel) and
|
||||||
(FStartCodeFoldBlockLevel > 0)
|
(FStartCodeFoldBlockLevel > 0)
|
||||||
then begin
|
then begin
|
||||||
PasCodeFoldRange.DecLastLineCodeFoldLevelFix;
|
PasCodeFoldRange.DecLastLineCodeFoldLevelFix;
|
||||||
@ -3860,7 +3847,7 @@ begin
|
|||||||
if FCatchNodeInfo then FCatchNodeInfoList.Delete;
|
if FCatchNodeInfo then FCatchNodeInfoList.Delete;
|
||||||
end;
|
end;
|
||||||
// TODO this only happens if the above was true
|
// TODO this only happens if the above was true
|
||||||
if (PasCodeFoldRange.PasFoldEndLevel < FPasStartLevel) and
|
if (PasCodeFoldRange.CodeFoldStackSize < FPasStartLevel) and
|
||||||
(FPasStartLevel > 0)
|
(FPasStartLevel > 0)
|
||||||
then begin
|
then begin
|
||||||
PasCodeFoldRange.DecLastLinePasFoldFix;
|
PasCodeFoldRange.DecLastLinePasFoldFix;
|
||||||
@ -3884,7 +3871,7 @@ function TSynPasSyn.GetDrawDivider(Index: integer): TSynDividerDrawConfigSetting
|
|||||||
begin
|
begin
|
||||||
i := 0;
|
i := 0;
|
||||||
j := StartLvl;
|
j := StartLvl;
|
||||||
m := PasCodeFoldRange.CodeFoldStackSize;;
|
m := PasCodeFoldRange.NestFoldStackSize;;
|
||||||
t := TopPascalCodeFoldBlockType(j);
|
t := TopPascalCodeFoldBlockType(j);
|
||||||
while (i <= MaxDepth) and (j < m) and
|
while (i <= MaxDepth) and (j < m) and
|
||||||
((t in CountTypes) or (t in SkipTypes)) do begin
|
((t in CountTypes) or (t in SkipTypes)) do begin
|
||||||
@ -4307,9 +4294,7 @@ begin
|
|||||||
inherited Clear;
|
inherited Clear;
|
||||||
FBracketNestLevel := 0;
|
FBracketNestLevel := 0;
|
||||||
FLastLineCodeFoldLevelFix := 0;
|
FLastLineCodeFoldLevelFix := 0;
|
||||||
FPasFoldEndLevel := 0;
|
|
||||||
FPasFoldFixLevel := 0;
|
FPasFoldFixLevel := 0;
|
||||||
FPasFoldMinLevel := 0;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TSynPasSynRange.Compare(Range: TSynCustomHighlighterRange): integer;
|
function TSynPasSynRange.Compare(Range: TSynCustomHighlighterRange): integer;
|
||||||
@ -4323,10 +4308,6 @@ begin
|
|||||||
if Result<>0 then exit;
|
if Result<>0 then exit;
|
||||||
Result := FLastLineCodeFoldLevelFix - TSynPasSynRange(Range).FLastLineCodeFoldLevelFix;
|
Result := FLastLineCodeFoldLevelFix - TSynPasSynRange(Range).FLastLineCodeFoldLevelFix;
|
||||||
if Result<>0 then exit;
|
if Result<>0 then exit;
|
||||||
Result := FPasFoldEndLevel - TSynPasSynRange(Range).FPasFoldEndLevel;
|
|
||||||
if Result<>0 then exit;
|
|
||||||
Result := FPasFoldMinLevel - TSynPasSynRange(Range).FPasFoldMinLevel;
|
|
||||||
if Result<>0 then exit;
|
|
||||||
Result := FPasFoldFixLevel - TSynPasSynRange(Range).FPasFoldFixLevel;
|
Result := FPasFoldFixLevel - TSynPasSynRange(Range).FPasFoldFixLevel;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -4337,30 +4318,10 @@ begin
|
|||||||
FMode:=TSynPasSynRange(Src).FMode;
|
FMode:=TSynPasSynRange(Src).FMode;
|
||||||
FBracketNestLevel:=TSynPasSynRange(Src).FBracketNestLevel;
|
FBracketNestLevel:=TSynPasSynRange(Src).FBracketNestLevel;
|
||||||
FLastLineCodeFoldLevelFix := TSynPasSynRange(Src).FLastLineCodeFoldLevelFix;
|
FLastLineCodeFoldLevelFix := TSynPasSynRange(Src).FLastLineCodeFoldLevelFix;
|
||||||
FPasFoldEndLevel := TSynPasSynRange(Src).FPasFoldEndLevel;
|
|
||||||
FPasFoldMinLevel := TSynPasSynRange(Src).FPasFoldMinLevel;
|
|
||||||
FPasFoldFixLevel := TSynPasSynRange(Src).FPasFoldFixLevel;
|
FPasFoldFixLevel := TSynPasSynRange(Src).FPasFoldFixLevel;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TSynPasSynRange.Add(ABlockType: Pointer; IncreaseLevel: Boolean): TSynCustomCodeFoldBlock;
|
|
||||||
begin
|
|
||||||
Result := inherited Add(ABlockType, True);
|
|
||||||
if IncreaseLevel and assigned(result) then
|
|
||||||
inc(FPasFoldEndLevel);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TSynPasSynRange.Pop(DecreaseLevel: Boolean);
|
|
||||||
begin
|
|
||||||
if assigned(Top.Parent) then begin
|
|
||||||
if DecreaseLevel then
|
|
||||||
dec(FPasFoldEndLevel);
|
|
||||||
if FPasFoldMinLevel > FPasFoldEndLevel then
|
|
||||||
FPasFoldMinLevel := FPasFoldEndLevel;
|
|
||||||
end;
|
|
||||||
inherited Pop(True);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TSynPasSynRange.MaxFoldLevel: Integer;
|
function TSynPasSynRange.MaxFoldLevel: Integer;
|
||||||
begin
|
begin
|
||||||
// Protect from overly mem consumption, by too many nested folds
|
// Protect from overly mem consumption, by too many nested folds
|
||||||
|
Loading…
Reference in New Issue
Block a user