mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-23 04:19:47 +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 FoldTypeAtNodeIndex(ALineIndex, FoldIndex: Integer;
|
||||
UseCloseNodes: boolean = false): integer; override;
|
||||
function FoldLineLength(ALineIndex, FoldIndex: Integer): integer; override;
|
||||
|
||||
// Pascal coe only // TODO: make private
|
||||
function MinimumFoldLevel(Index: Integer): integer; override;
|
||||
@ -2871,6 +2872,26 @@ begin
|
||||
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;
|
||||
var
|
||||
r: TSynPasSynRange;
|
||||
|
Loading…
Reference in New Issue
Block a user