mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-19 05:19:25 +02:00
SynEdit IFDEF: fix crash with comments
git-svn-id: trunk@41829 -
This commit is contained in:
parent
9b7eeb99d9
commit
0e15ad2e4f
@ -149,6 +149,8 @@ type
|
||||
property NodeState: TSynMarkupIfdefNodeStateEx read GetNodeState write SetNodeState;
|
||||
property NodeFlags: SynMarkupIfDefNodeFlags read FNodeFlags write FNodeFlags;
|
||||
function UncommentedNodeType: TSynMarkupIfdefNodeType;
|
||||
procedure MakeCommented;
|
||||
procedure MakeUnCommented;
|
||||
property Line: TSynMarkupHighIfDefLinesNode read FLine write SetLine;
|
||||
property StartColumn: Integer read FStartColumn write SetStartColumn;// FStartColumn;
|
||||
property EndColumn: Integer read FEndColumn write FEndColumn;
|
||||
@ -896,6 +898,20 @@ begin
|
||||
Result := NodeType;
|
||||
end;
|
||||
|
||||
procedure TSynMarkupHighIfDefEntry.MakeCommented;
|
||||
begin
|
||||
RemoveNodeStateFromLine;
|
||||
Include(FNodeFlags, idnCommented);
|
||||
ApplyNodeStateToLine;
|
||||
end;
|
||||
|
||||
procedure TSynMarkupHighIfDefEntry.MakeUnCommented;
|
||||
begin
|
||||
RemoveNodeStateFromLine;
|
||||
Exclude(FNodeFlags, idnCommented);
|
||||
ApplyNodeStateToLine;
|
||||
end;
|
||||
|
||||
function TSynMarkupHighIfDefEntry.IsDisabled: Boolean;
|
||||
begin
|
||||
Result := FNodeState in [idnDisabled, idnTempDisabled];
|
||||
@ -2474,7 +2490,7 @@ var
|
||||
dec(i);
|
||||
end;
|
||||
inc(NodesAddedCnt);
|
||||
Include(e.FNodeFlags, idnCommented);
|
||||
e.MakeCommented;
|
||||
end;
|
||||
inc(i);
|
||||
end;
|
||||
@ -2491,7 +2507,7 @@ var
|
||||
then begin
|
||||
// Does match exactly, keep as is
|
||||
//DebugLn(['++++ KEEPING NODE ++++ ', ALine, ' ', dbgs(AType), ': ', ALogStart, ' - ', ALogEnd]);
|
||||
Exclude(Result.FNodeFlags, idnCommented);
|
||||
Result.MakeUnCommented;
|
||||
if not LineNeedsReq then
|
||||
LineNeedsReq := Result.NeedsRequesting;
|
||||
if i > NodesAddedCnt then begin
|
||||
@ -2646,7 +2662,7 @@ begin
|
||||
i := ANodeForLine.EntryCount - 1;
|
||||
while i >= NodesAddedCnt do begin
|
||||
if IsCommentedIfDef(ANodeForLine.Entry[i]) then begin
|
||||
Include(ANodeForLine.Entry[i].FNodeFlags, idnCommented);
|
||||
ANodeForLine.Entry[i].MakeCommented;
|
||||
inc(NodesAddedCnt);
|
||||
end
|
||||
else begin
|
||||
@ -2714,6 +2730,8 @@ var
|
||||
while (ANode.EntryCount = 0) or (idlAllNodesCommented in ANode.LineFlags) do begin
|
||||
n := ANode.Node;
|
||||
ANode := ANode.Successor;
|
||||
while n.EntryCount > 0 do
|
||||
n.DeletEntry(0, True);
|
||||
RemoveLine(n);
|
||||
if not ANode.HasNode then
|
||||
exit;
|
||||
|
Loading…
Reference in New Issue
Block a user