mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-04 04:37:35 +01:00
codetools: fixed TLinkScanner.LinkSize for last link
git-svn-id: trunk@29796 -
This commit is contained in:
parent
ac2f3730dc
commit
304a45372e
@ -786,7 +786,7 @@ begin
|
||||
if Index<LinkCount-1 then
|
||||
Result:=FLinks[Index+1].CleanedPos-FLinks[Index].CleanedPos
|
||||
else
|
||||
Result:=CleanedLen-FLinks[Index].CleanedPos;
|
||||
Result:=CleanedLen-FLinks[Index].CleanedPos+1;
|
||||
end;
|
||||
|
||||
function TLinkScanner.LinkCleanedEndPos(Index: integer): integer;
|
||||
@ -3746,21 +3746,21 @@ procedure TLinkScanner.DeleteRange(CleanStartPos,CleanEndPos: integer);
|
||||
}
|
||||
var LinkIndex, StartPos, Len, aLinkSize: integer;
|
||||
begin
|
||||
if (CleanStartPos<1) or (CleanStartPos>=CleanEndPos)
|
||||
or (CleanEndPos>CleanedLen+1) or (not Assigned(FOnDeleteSource)) then exit;
|
||||
if CleanStartPos<1 then CleanStartPos:=1;
|
||||
if CleanEndPos>CleanedLen then CleanEndPos:=CleanedLen+1;
|
||||
if (CleanStartPos>=CleanEndPos) or (not Assigned(FOnDeleteSource)) then exit;
|
||||
LinkIndex:=LinkIndexAtCleanPos(CleanEndPos-1);
|
||||
//debugln(['TLinkScanner.DeleteRange CleanStartPos=',CleanStartPos,' CleanEndPos=',CleanEndPos,' LinkIndex=',LinkIndex]);
|
||||
while LinkIndex>=0 do begin
|
||||
StartPos:=CleanStartPos-FLinks[LinkIndex].CleanedPos;
|
||||
if StartPos<0 then StartPos:=0;
|
||||
aLinkSize:=LinkSize(LinkIndex);
|
||||
if CleanEndPos<FLinks[LinkIndex].CleanedPos+aLinkSize then
|
||||
Len:=CleanEndPos-FLinks[LinkIndex].CleanedPos-StartPos
|
||||
else
|
||||
Len:=aLinkSize-StartPos;
|
||||
//debugln(['TLinkScanner.DeleteRange LinkIndex=',LinkIndex,' aLinkSize=',aLinkSize,' StartPosInLink=',StartPos]);
|
||||
Len:=CleanEndPos-FLinks[LinkIndex].CleanedPos;
|
||||
if Len>aLinkSize then Len:=aLinkSize;
|
||||
dec(Len,StartPos);
|
||||
inc(StartPos,FLinks[LinkIndex].SrcPos);
|
||||
{$IFDEF VerboseBug16168}
|
||||
DebugLn(['[TLinkScanner.DeleteRange] Pos=',StartPos,'-',StartPos+Len,' ',dbgstr(copy(Src,StartPos,Len))]);
|
||||
{$ENDIF}
|
||||
//DebugLn(['[TLinkScanner.DeleteRange] Pos=',StartPos,'-',StartPos+Len,' ',dbgstr(copy(Src,StartPos,Len))]);
|
||||
FOnDeleteSource(Self,FLinks[LinkIndex].Code,StartPos,Len);
|
||||
if FLinks[LinkIndex].CleanedPos<=CleanStartPos then break;
|
||||
dec(LinkIndex);
|
||||
|
||||
@ -952,6 +952,7 @@ begin
|
||||
{$ENDIF}
|
||||
if InsertText='' then exit;
|
||||
ACode.Insert(DirectPos,InsertText);
|
||||
//DebugLn('[TSourceChangeCache.InsertNewText] Code=',ACode.Source);
|
||||
end;
|
||||
|
||||
procedure TSourceChangeCache.BeginUpdate;
|
||||
|
||||
@ -390,8 +390,10 @@ var NamePos: TAtomPosition;
|
||||
begin
|
||||
Result:=false;
|
||||
BuildTree(lsrSourceName);
|
||||
//debugln(['TStandardCodeTool.RenameSource NewName=',NewName]);
|
||||
if (not GetSourceNamePos(NamePos)) or (NamePos.StartPos<1) or (NewName='')
|
||||
or (Length(NewName)>255) then exit;
|
||||
//debugln(['TStandardCodeTool.RenameSource OldName="',dbgstr(copy(Src,NamePos.StartPos,NamePos.EndPos-NamePos.StartPos)),'"']);
|
||||
SourceChangeCache.MainScanner:=Scanner;
|
||||
SourceChangeCache.Replace(gtNone,gtNone,NamePos.StartPos,NamePos.EndPos,
|
||||
NewName);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user