mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-17 06:09:15 +02:00
codetools: implemented TCCodeParserTool.Replace
git-svn-id: trunk@14281 -
This commit is contained in:
parent
e748b6291f
commit
e5c953b67b
@ -88,6 +88,8 @@ type
|
||||
function AtomIsIdentifier: boolean;
|
||||
function GetAtom: string;
|
||||
|
||||
procedure Replace(FromPos, ToPos: integer; const NewSrc: string);
|
||||
|
||||
procedure IncreaseChangeStep;
|
||||
procedure WriteDebugReport;
|
||||
|
||||
@ -210,6 +212,29 @@ begin
|
||||
Result:=copy(Src,AtomStart,SrcPos-AtomStart);
|
||||
end;
|
||||
|
||||
procedure TCCodeParserTool.Replace(FromPos, ToPos: integer; const NewSrc: string
|
||||
);
|
||||
var
|
||||
Node: TCodeTreeNode;
|
||||
DiffPos: Integer;
|
||||
begin
|
||||
DebugLn(['TCCodeParserTool.Replace ',FromPos,'-',ToPos,' Old="',copy(Src,FromPos,ToPos-FromPos),'" New="',NewSrc,'"']);
|
||||
IncreaseChangeStep;
|
||||
Code.Replace(FromPos,ToPos-FromPos,NewSrc);
|
||||
Src:=Code.Source;
|
||||
SrcLen:=length(Src);
|
||||
// update positions
|
||||
DiffPos:=length(NewSrc)-(ToPos-FromPos);
|
||||
if DiffPos<>0 then begin
|
||||
Node:=Tree.Root;
|
||||
while Node<>nil do begin
|
||||
AdjustPositionAfterInsert(Node.StartPos,true,FromPos,ToPos,DiffPos);
|
||||
AdjustPositionAfterInsert(Node.EndPos,false,FromPos,ToPos,DiffPos);
|
||||
Node:=Node.Next;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCCodeParserTool.IncreaseChangeStep;
|
||||
begin
|
||||
if FChangeStep<>$7fffffff then
|
||||
|
Loading…
Reference in New Issue
Block a user