mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-17 10:49:09 +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.
|
Dialog to search a missing unit.
|
||||||
|
|
||||||
ToDo:
|
ToDo:
|
||||||
- check if owner has already the dependency
|
|
||||||
- search in packages on disk
|
- search in packages on disk
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -87,6 +86,7 @@ type
|
|||||||
procedure InitSearchPackages;
|
procedure InitSearchPackages;
|
||||||
procedure AddQuickFix(Item: TQuickFixMissingUnit);
|
procedure AddQuickFix(Item: TQuickFixMissingUnit);
|
||||||
procedure AddRequirement(Item: TQuickFixMissingUnitAddRequirement);
|
procedure AddRequirement(Item: TQuickFixMissingUnitAddRequirement);
|
||||||
|
function MainOwnerHasRequirement(PackageName: string): boolean;
|
||||||
public
|
public
|
||||||
procedure InitWithMsg(Msg: TIDEMessageLine; Line: string; aCode: TCodeBuffer;
|
procedure InitWithMsg(Msg: TIDEMessageLine; Line: string; aCode: TCodeBuffer;
|
||||||
aMissingUnitName: string);
|
aMissingUnitName: string);
|
||||||
@ -243,13 +243,22 @@ begin
|
|||||||
if (FSearchPackages<>nil) and (FSearchPackagesIndex<FSearchPackages.Count)
|
if (FSearchPackages<>nil) and (FSearchPackagesIndex<FSearchPackages.Count)
|
||||||
then begin
|
then begin
|
||||||
Filename:=FSearchPackages[FSearchPackagesIndex];
|
Filename:=FSearchPackages[FSearchPackagesIndex];
|
||||||
|
// search in open packages
|
||||||
for i:=0 to PackageGraph.Count-1 do begin
|
for i:=0 to PackageGraph.Count-1 do begin
|
||||||
APackage:=PackageGraph.Packages[i];
|
APackage:=PackageGraph.Packages[i];
|
||||||
if APackage.Filename=Filename then begin
|
if APackage.Filename=Filename then begin
|
||||||
if APackage.FindUnit(MissingUnitName)<>nil then
|
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));
|
AddQuickFix(TQuickFixMissingUnitAddRequirement.Create(APackage.Name));
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
// search in package on disk
|
||||||
|
|
||||||
inc(FSearchPackagesIndex);
|
inc(FSearchPackagesIndex);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -302,6 +311,24 @@ begin
|
|||||||
end;
|
end;
|
||||||
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;
|
procedure TFindUnitDialog.InitWithMsg(Msg: TIDEMessageLine; Line: string;
|
||||||
aCode: TCodeBuffer; aMissingUnitName: string);
|
aCode: TCodeBuffer; aMissingUnitName: string);
|
||||||
|
|
||||||
|
@ -229,7 +229,7 @@ type
|
|||||||
function PackageNameExists(const PkgName: string;
|
function PackageNameExists(const PkgName: string;
|
||||||
IgnorePackage: TLazPackage): boolean;
|
IgnorePackage: TLazPackage): boolean;
|
||||||
procedure GetAllRequiredPackages(FirstDependency: TPkgDependency;
|
procedure GetAllRequiredPackages(FirstDependency: TPkgDependency;
|
||||||
out List: TFPList);
|
out List: TFPList); // for single search use FindDependencyRecursively
|
||||||
procedure GetConnectionsTree(FirstDependency: TPkgDependency;
|
procedure GetConnectionsTree(FirstDependency: TPkgDependency;
|
||||||
var PkgList: TFPList; var Tree: TPkgPairTree);
|
var PkgList: TFPList; var Tree: TPkgPairTree);
|
||||||
function GetAutoCompilationOrder(APackage: TLazPackage;
|
function GetAutoCompilationOrder(APackage: TLazPackage;
|
||||||
|
Loading…
Reference in New Issue
Block a user