codetools: fixed TLinkScanner.LinkSize for last link

git-svn-id: trunk@29796 -
This commit is contained in:
mattias 2011-03-11 11:09:16 +00:00
parent ac2f3730dc
commit 304a45372e
3 changed files with 13 additions and 10 deletions

View File

@ -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);

View File

@ -952,6 +952,7 @@ begin
{$ENDIF}
if InsertText='' then exit;
ACode.Insert(DirectPos,InsertText);
//DebugLn('[TSourceChangeCache.InsertNewText] Code=',ACode.Source);
end;
procedure TSourceChangeCache.BeginUpdate;

View File

@ -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);