mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-19 10:49:44 +02:00
IDE: quick fix cant find unit: check if owner already depends on package
git-svn-id: trunk@22024 -
This commit is contained in:
parent
7030b96ce1
commit
fbec38464e
@ -24,7 +24,6 @@
|
||||
Dialog to search a missing unit.
|
||||
|
||||
ToDo:
|
||||
- check if owner has already the dependency
|
||||
- search in packages on disk
|
||||
|
||||
}
|
||||
@ -87,6 +86,7 @@ type
|
||||
procedure InitSearchPackages;
|
||||
procedure AddQuickFix(Item: TQuickFixMissingUnit);
|
||||
procedure AddRequirement(Item: TQuickFixMissingUnitAddRequirement);
|
||||
function MainOwnerHasRequirement(PackageName: string): boolean;
|
||||
public
|
||||
procedure InitWithMsg(Msg: TIDEMessageLine; Line: string; aCode: TCodeBuffer;
|
||||
aMissingUnitName: string);
|
||||
@ -243,13 +243,22 @@ begin
|
||||
if (FSearchPackages<>nil) and (FSearchPackagesIndex<FSearchPackages.Count)
|
||||
then begin
|
||||
Filename:=FSearchPackages[FSearchPackagesIndex];
|
||||
// search in open packages
|
||||
for i:=0 to PackageGraph.Count-1 do begin
|
||||
APackage:=PackageGraph.Packages[i];
|
||||
if APackage.Filename=Filename then begin
|
||||
if APackage.FindUnit(MissingUnitName)<>nil then
|
||||
AddQuickFix(TQuickFixMissingUnitAddRequirement.Create(APackage.Name));
|
||||
if APackage.FindUnit(MissingUnitName)<>nil then begin
|
||||
if MainOwnerHasRequirement(APackage.Name) then begin
|
||||
// already in requirements
|
||||
end else begin
|
||||
// not yet in requirements -> add a quick fix
|
||||
AddQuickFix(TQuickFixMissingUnitAddRequirement.Create(APackage.Name));
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
// search in package on disk
|
||||
|
||||
inc(FSearchPackagesIndex);
|
||||
end;
|
||||
end;
|
||||
@ -302,6 +311,24 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TFindUnitDialog.MainOwnerHasRequirement(PackageName: string): boolean;
|
||||
var
|
||||
AProject: TProject;
|
||||
APackage: TLazPackage;
|
||||
begin
|
||||
Result:=false;
|
||||
if FMainOwner=nil then exit;
|
||||
if FMainOwner is TProject then begin
|
||||
AProject:=TProject(FMainOwner);
|
||||
Result:=PackageGraph.FindDependencyRecursively(
|
||||
AProject.FirstRequiredDependency,PackageName)<>nil;
|
||||
end else if FMainOwner is TLazPackage then begin
|
||||
APackage:=TLazPackage(FMainOwner);
|
||||
Result:=PackageGraph.FindDependencyRecursively(
|
||||
APackage.FirstRequiredDependency,PackageName)<>nil;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFindUnitDialog.InitWithMsg(Msg: TIDEMessageLine; Line: string;
|
||||
aCode: TCodeBuffer; aMissingUnitName: string);
|
||||
|
||||
|
@ -229,7 +229,7 @@ type
|
||||
function PackageNameExists(const PkgName: string;
|
||||
IgnorePackage: TLazPackage): boolean;
|
||||
procedure GetAllRequiredPackages(FirstDependency: TPkgDependency;
|
||||
out List: TFPList);
|
||||
out List: TFPList); // for single search use FindDependencyRecursively
|
||||
procedure GetConnectionsTree(FirstDependency: TPkgDependency;
|
||||
var PkgList: TFPList; var Tree: TPkgPairTree);
|
||||
function GetAutoCompilationOrder(APackage: TLazPackage;
|
||||
|
Loading…
Reference in New Issue
Block a user