mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-02 12:40:33 +02:00
cody: dictionary: open package before inserting identifier
git-svn-id: trunk@33928 -
This commit is contained in:
parent
c668936724
commit
853def7d42
@ -891,15 +891,14 @@ var
|
|||||||
CurUnitName: String;
|
CurUnitName: String;
|
||||||
NewUnitName: String;
|
NewUnitName: String;
|
||||||
SameUnitName: boolean;
|
SameUnitName: boolean;
|
||||||
|
PkgDependencyAdded: boolean;
|
||||||
|
|
||||||
function AddDependency: boolean;
|
function OpenDependency: boolean;
|
||||||
// returns false to abort
|
// returns false to abort
|
||||||
var
|
var
|
||||||
Pkg: TIDEPackage;
|
|
||||||
DepOwner: TObject;
|
DepOwner: TObject;
|
||||||
OwnerList: TFPList;
|
|
||||||
begin
|
begin
|
||||||
debugln(['TCodyIdentifiersDlg.UseIdentifier not in unit path, connecting package "'+NewGroupName+'", "'+NewGroupFilename+'" ...']);
|
debugln(['TCodyIdentifiersDlg.UseIdentifier not in unit path, loading package "'+NewGroupName+'", "'+NewGroupFilename+'" ...']);
|
||||||
Result:=true;
|
Result:=true;
|
||||||
Pkg:=PackageEditingInterface.FindPackageWithName(NewGroupName);
|
Pkg:=PackageEditingInterface.FindPackageWithName(NewGroupName);
|
||||||
if (Pkg=nil) or (CompareFilenames(Pkg.Filename,NewGroupFilename)<>0) then
|
if (Pkg=nil) or (CompareFilenames(Pkg.Filename,NewGroupFilename)<>0) then
|
||||||
@ -922,10 +921,19 @@ var
|
|||||||
if PackageEditingInterface.IsOwnerDependingOnPkg(CurOwner,NewGroupName,DepOwner)
|
if PackageEditingInterface.IsOwnerDependingOnPkg(CurOwner,NewGroupName,DepOwner)
|
||||||
then begin
|
then begin
|
||||||
// already depending on package name
|
// already depending on package name
|
||||||
|
PkgDependencyAdded:=true;
|
||||||
debugln(['TCodyIdentifiersDlg.UseIdentifier owner is already using "'+NewGroupName+'"']);
|
debugln(['TCodyIdentifiersDlg.UseIdentifier owner is already using "'+NewGroupName+'"']);
|
||||||
// ToDo: check version
|
// ToDo: check version
|
||||||
exit(true);
|
|
||||||
end;
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function AddDependency: boolean;
|
||||||
|
// returns false to abort
|
||||||
|
var
|
||||||
|
OwnerList: TFPList;
|
||||||
|
begin
|
||||||
|
if PkgDependencyAdded then exit;
|
||||||
|
PkgDependencyAdded:=true;
|
||||||
// add dependency
|
// add dependency
|
||||||
OwnerList:=TFPList.Create;
|
OwnerList:=TFPList.Create;
|
||||||
try
|
try
|
||||||
@ -952,14 +960,17 @@ begin
|
|||||||
|
|
||||||
UpdateCurOwnerOfUnit;
|
UpdateCurOwnerOfUnit;
|
||||||
|
|
||||||
// check if adding unit is possible
|
// do some sanity checks
|
||||||
NewUnitInPath:=false;
|
NewUnitInPath:=false;
|
||||||
UnitPathAdd:=ChompPathDelim(
|
UnitPathAdd:=ChompPathDelim(
|
||||||
CreateRelativePath(ExtractFilePath(CurMainFilename),
|
CreateRelativePath(ExtractFilePath(CurMainFilename),
|
||||||
ExtractFilePath(NewUnitFilename)));
|
ExtractFilePath(NewUnitFilename)));
|
||||||
|
|
||||||
CurUnitName:=ExtractFileNameOnly(CurMainFilename);
|
CurUnitName:=ExtractFileNameOnly(CurMainFilename);
|
||||||
NewUnitName:=ExtractFileNameOnly(NewUnitFilename);
|
NewUnitName:=ExtractFileNameOnly(NewUnitFilename);
|
||||||
|
FPCSrcFilename:='';
|
||||||
|
Pkg:=nil;
|
||||||
|
PkgDependencyAdded:=false;
|
||||||
|
|
||||||
SameUnitName:=CompareDottedIdentifiers(PChar(CurUnitName),PChar(NewUnitName))=0;
|
SameUnitName:=CompareDottedIdentifiers(PChar(CurUnitName),PChar(NewUnitName))=0;
|
||||||
if SameUnitName and (CompareFilenames(CurMainFilename,NewUnitFilename)<>0)
|
if SameUnitName and (CompareFilenames(CurMainFilename,NewUnitFilename)<>0)
|
||||||
then begin
|
then begin
|
||||||
@ -998,7 +1009,8 @@ begin
|
|||||||
if NewGroupName=PackageNameFPCSrcDir then begin
|
if NewGroupName=PackageNameFPCSrcDir then begin
|
||||||
// new unit is a FPC unit
|
// new unit is a FPC unit
|
||||||
debugln(['TCodyIdentifiersDlg.UseIdentifier in FPCSrcDir']);
|
debugln(['TCodyIdentifiersDlg.UseIdentifier in FPCSrcDir']);
|
||||||
FPCSrcFilename:=UnitSet.GetUnitSrcFile(ExtractFileNameOnly(NewUnitFilename));
|
if UnitSet<>nil then
|
||||||
|
FPCSrcFilename:=UnitSet.GetUnitSrcFile(ExtractFileNameOnly(NewUnitFilename));
|
||||||
if FPCSrcFilename='' then begin
|
if FPCSrcFilename='' then begin
|
||||||
// a FPC unit without a ppu file
|
// a FPC unit without a ppu file
|
||||||
// => ask for confirmation
|
// => ask for confirmation
|
||||||
@ -1033,6 +1045,15 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
// open package to get the compiler settings to parse the unit
|
||||||
|
if (CurOwner<>nil) and (not NewUnitInPath)
|
||||||
|
and (NewGroupName<>'') and (NewGroupName<>PackageNameFPCSrcDir) then begin
|
||||||
|
if not OpenDependency then exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// check if identifier is still exists
|
||||||
|
// ToDo
|
||||||
|
|
||||||
CurSrcEdit.BeginUndoBlock;
|
CurSrcEdit.BeginUndoBlock;
|
||||||
try
|
try
|
||||||
// insert or replace identifier
|
// insert or replace identifier
|
||||||
|
Loading…
Reference in New Issue
Block a user