mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-17 22:59:15 +02:00
SynEdit: Fixed folding IFDEF / broken in rev 24622 #ae416f6a77
git-svn-id: trunk@24638 -
This commit is contained in:
parent
585da14064
commit
10ffed1014
@ -484,6 +484,7 @@ type
|
|||||||
function FoldTypeCount: integer; override;
|
function FoldTypeCount: integer; override;
|
||||||
function FoldTypeAtNodeIndex(ALineIndex, FoldIndex: Integer;
|
function FoldTypeAtNodeIndex(ALineIndex, FoldIndex: Integer;
|
||||||
UseCloseNodes: boolean = false): integer; override;
|
UseCloseNodes: boolean = false): integer; override;
|
||||||
|
function FoldLineLength(ALineIndex, FoldIndex: Integer): integer; override;
|
||||||
|
|
||||||
// Pascal coe only // TODO: make private
|
// Pascal coe only // TODO: make private
|
||||||
function MinimumFoldLevel(Index: Integer): integer; override;
|
function MinimumFoldLevel(Index: Integer): integer; override;
|
||||||
@ -2871,6 +2872,26 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TSynPasSyn.FoldLineLength(ALineIndex, FoldIndex: Integer): integer;
|
||||||
|
var
|
||||||
|
i, lvl, cnt, atype : Integer;
|
||||||
|
e, m: Integer;
|
||||||
|
begin
|
||||||
|
atype := FoldTypeAtNodeIndex(ALineIndex, FoldIndex);
|
||||||
|
cnt := CurrentLines.Count;
|
||||||
|
e := EndPasFoldLevel(ALineIndex, atype);
|
||||||
|
m := MinimumPasFoldLevel(ALineIndex, atype);
|
||||||
|
lvl := Min(m+1+FoldIndex, e);
|
||||||
|
i := ALineIndex + 1;
|
||||||
|
while (i < cnt) and (MinimumPasFoldLevel(i, atype) >= lvl) do inc(i);
|
||||||
|
// check if fold last line of block (not mixed "end begin")
|
||||||
|
// and not lastlinefix
|
||||||
|
if (i = cnt) or (EndPasFoldLevel(i, atype) > MinimumPasFoldLevel(i, atype)) then
|
||||||
|
dec(i);
|
||||||
|
// Amount of lines, that will become invisible (excludes the cfCollapsed line)
|
||||||
|
Result := i - ALineIndex;
|
||||||
|
end;
|
||||||
|
|
||||||
function TSynPasSyn.MinimumPasFoldLevel(Index: Integer; AType: Integer = 1): integer;
|
function TSynPasSyn.MinimumPasFoldLevel(Index: Integer; AType: Integer = 1): integer;
|
||||||
var
|
var
|
||||||
r: TSynPasSynRange;
|
r: TSynPasSynRange;
|
||||||
|
Loading…
Reference in New Issue
Block a user