mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-26 23:20:26 +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 AtomIsIdentifier: boolean;
|
||||||
function GetAtom: string;
|
function GetAtom: string;
|
||||||
|
|
||||||
|
procedure Replace(FromPos, ToPos: integer; const NewSrc: string);
|
||||||
|
|
||||||
procedure IncreaseChangeStep;
|
procedure IncreaseChangeStep;
|
||||||
procedure WriteDebugReport;
|
procedure WriteDebugReport;
|
||||||
|
|
||||||
@ -210,6 +212,29 @@ begin
|
|||||||
Result:=copy(Src,AtomStart,SrcPos-AtomStart);
|
Result:=copy(Src,AtomStart,SrcPos-AtomStart);
|
||||||
end;
|
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;
|
procedure TCCodeParserTool.IncreaseChangeStep;
|
||||||
begin
|
begin
|
||||||
if FChangeStep<>$7fffffff then
|
if FChangeStep<>$7fffffff then
|
||||||
|
Loading…
Reference in New Issue
Block a user