IDE: todo list, adding files only once

git-svn-id: trunk@16547 -
This commit is contained in:
mattias 2008-09-11 15:07:53 +00:00
parent 8ae737a76d
commit 781f6e7a6c

View File

@ -275,7 +275,7 @@ const
end; end;
begin begin
//DebugLn(['TfrmTodo.CreateToDoItem aFileName=',aFileName,' LineNumber=',LineNumber]);
Result := nil; Result := nil;
ParsingString:= Trim(TokenString); ParsingString:= Trim(TokenString);
@ -527,6 +527,8 @@ var
CurPackage: TLazPackage; CurPackage: TLazPackage;
CurProjFile: TLazProjectFile; CurProjFile: TLazProjectFile;
CurPkgFile: TPkgFile; CurPkgFile: TPkgFile;
Node: TAvgLvlTreeNode;
CurFile: TTLScannedFile;
begin begin
if fBuild then Exit; if fBuild then Exit;
@ -536,6 +538,7 @@ begin
Owners:=nil; Owners:=nil;
try try
fBuild:=True; fBuild:=True;
CodeToolBoss.ActivateWriteLock;
lvTodo.Items.Clear; lvTodo.Items.Clear;
if MainSourceFilename='' then exit; if MainSourceFilename='' then exit;
@ -603,7 +606,16 @@ begin
ScanFile(CurPkgFile.Filename); ScanFile(CurPkgFile.Filename);
end; end;
end; end;
Node:=fScannedFiles.FindLowest;
while Node<>nil do begin
CurFile:=TTLScannedFile(Node.Data);
for i:=0 to CurFile.Count-1 do
AddListItem(CurFile[i]);
Node:=fScannedFiles.FindSuccessor(Node);
end;
finally finally
CodeToolBoss.DeactivateWriteLock;
Owners.Free; Owners.Free;
Screen.Cursor:=crDefault; Screen.Cursor:=crDefault;
fBuild:=False; fBuild:=False;
@ -616,6 +628,7 @@ var
begin begin
if Assigned(aTodoItem) then if Assigned(aTodoItem) then
begin begin
//DebugLn(['TfrmTodo.AddListItem ',aTodoItem.Filename,' ',aTodoItem.LineNumber]);
aListitem := lvTodo.Items.Add; aListitem := lvTodo.Items.Add;
aListitem.Data := aTodoItem; aListitem.Data := aTodoItem;
if aTodoItem.Done then if aTodoItem.Done then
@ -644,9 +657,8 @@ var
CommentEnd: LongInt; CommentEnd: LongInt;
CommentStr: String; CommentStr: String;
CodeXYPosition: TCodeXYPosition; CodeXYPosition: TCodeXYPosition;
i: Integer;
begin begin
DebugLn(['TfrmTodo.ScanFile ',aFileName]); //DebugLn(['TfrmTodo.ScanFile ',aFileName]);
ExpandedFilename:=TrimFilename(aFileName); ExpandedFilename:=TrimFilename(aFileName);
Code:=CodeToolBoss.LoadFile(ExpandedFilename,true,false); Code:=CodeToolBoss.LoadFile(ExpandedFilename,true,false);
@ -657,12 +669,13 @@ begin
AVLNode:=fScannedFiles.FindKey(Pointer(Tool.MainFilename), AVLNode:=fScannedFiles.FindKey(Pointer(Tool.MainFilename),
@CompareAnsiStringWithTLScannedFile); @CompareAnsiStringWithTLScannedFile);
CurFile:=nil; CurFile:=nil;
try //DebugLn(['TfrmTodo.ScanFile ',Tool.MainFilename,' AVLNode=',AVLNode<>nil]);
if AVLNode<>nil then begin if AVLNode<>nil then begin
CurFile:=TTLScannedFile(AVLNode.Data); CurFile:=TTLScannedFile(AVLNode.Data);
// Abort if this file has already been scanned and has not changed // Abort if this file has already been scanned and has not changed
if CurFile.CodeChangeStep=Tool.Scanner.ChangeStep then exit; if CurFile.CodeChangeStep=Tool.Scanner.ChangeStep then exit;
end; end;
//DebugLn(['TfrmTodo.ScanFile SCANNING ... ']);
// Add file name to list of scanned files // Add file name to list of scanned files
if CurFile=nil then begin if CurFile=nil then begin
@ -672,6 +685,7 @@ begin
end; end;
// save ChangeStep // save ChangeStep
CurFile.CodeChangeStep:=Tool.Scanner.ChangeStep; CurFile.CodeChangeStep:=Tool.Scanner.ChangeStep;
//DebugLn(['TfrmTodo.ScanFile saved ChangeStep ',CurFile.CodeChangeStep,' ',Tool.Scanner.ChangeStep]);
// clear old items // clear old items
CurFile.Clear; CurFile.Clear;
@ -688,7 +702,7 @@ begin
CommentEnd:=FindCommentEnd(Src,p,NestedComment); CommentEnd:=FindCommentEnd(Src,p,NestedComment);
Tool.CleanPosToCaret(p,CodeXYPosition); Tool.CleanPosToCaret(p,CodeXYPosition);
CommentStr:=copy(Src,p,CommentEnd-p); CommentStr:=copy(Src,p,CommentEnd-p);
//DebugLn(['TfrmTodo.LoadFile CommentStr="',CommentStr,'"']); //DebugLn(['TfrmTodo.ScanFile CommentStr="',CommentStr,'"']);
if Src[p]='/' then if Src[p]='/' then
CreateToDoItem(CurFile,CodeXYPosition.Code.Filename, '//', '', CommentStr, CodeXYPosition.Y) CreateToDoItem(CurFile,CodeXYPosition.Code.Filename, '//', '', CommentStr, CodeXYPosition.Y)
else if Src[p]='{' then else if Src[p]='{' then
@ -697,12 +711,6 @@ begin
CreateToDoItem(CurFile,CodeXYPosition.Code.Filename, '(*', '*)', CommentStr, CodeXYPosition.Y); CreateToDoItem(CurFile,CodeXYPosition.Code.Filename, '(*', '*)', CommentStr, CodeXYPosition.Y);
p:=CommentEnd; p:=CommentEnd;
until false; until false;
finally
if (CurFile<>nil) then begin
for i:=0 to CurFile.Count-1 do
AddListItem(CurFile[i]);
end;
end;
end; end;
{ TTodoItem } { TTodoItem }