mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-14 19:59:14 +02:00
IDE: removed auto resolving symlinks. Filenames must fit the search paths
git-svn-id: trunk@15795 -
This commit is contained in:
parent
b38ec6cfc3
commit
19b259bb99
@ -508,7 +508,7 @@ begin
|
||||
DebugLn('FindAllDelphiPackageUnits file not found: "',CurFilename,'"');
|
||||
continue;
|
||||
end;
|
||||
PkgFile:=APackage.FindPkgFile(CurFilename,false,true,false);
|
||||
PkgFile:=APackage.FindPkgFile(CurFilename,true,false);
|
||||
if PkgFile=nil then begin
|
||||
if FilenameIsPascalUnit(CurFilename) then begin
|
||||
// check unitname
|
||||
|
12
ide/main.pp
12
ide/main.pp
@ -7211,7 +7211,7 @@ begin
|
||||
Result:=mrOk;
|
||||
if Filename='' then exit;
|
||||
UnitIndex:=Project1.IndexOfFilename(TrimFilename(Filename),
|
||||
[pfsfOnlyEditorFiles,pfsfResolveFileLinks]);
|
||||
[pfsfOnlyEditorFiles]);
|
||||
if UnitIndex<0 then exit;
|
||||
AnUnitInfo:=Project1.Units[UnitIndex];
|
||||
if AnUnitInfo.EditorIndex>=0 then
|
||||
@ -7295,10 +7295,14 @@ begin
|
||||
AFilename:=TrimFilename(AFilename);
|
||||
DiskFilename:=FindDiskFilename(AFilename);
|
||||
if DiskFilename<>AFilename then begin
|
||||
debugln('WARNING: TMainIDE.DoOpenEditorFile Opening "',DiskFilename,'" instead "',AFilename,'"');
|
||||
// the case is different
|
||||
DebugLn(['TMainIDE.DoOpenEditorFile Fixing file case: ',AFilename,' -> ',DiskFilename]);
|
||||
AFilename:=DiskFilename;
|
||||
end;
|
||||
|
||||
|
||||
// check if symlink and ask user open the real file instead
|
||||
ChooseSymlink(AFilename);
|
||||
|
||||
FilenameNoPath:=ExtractFilename(AFilename);
|
||||
|
||||
// check to not open directories
|
||||
@ -7355,7 +7359,7 @@ begin
|
||||
ReOpen:=(UnitIndex>=0);
|
||||
// check if there is already a symlinked file open in the editor
|
||||
OtherUnitIndex:=Project1.IndexOfFilename(AFilename,
|
||||
[pfsfOnlyEditorFiles,pfsfResolveFileLinks]);
|
||||
[pfsfOnlyEditorFiles]);
|
||||
if (OtherUnitIndex>=0) and (OtherUnitIndex<>UnitIndex) then begin
|
||||
// There is another file open in the editor symlinked to the same file
|
||||
// ToDo
|
||||
|
@ -148,7 +148,7 @@ begin
|
||||
end;
|
||||
|
||||
// check if file is already in the package
|
||||
PkgFile:=APackage.FindPkgFile(Filename,false,true,false);
|
||||
PkgFile:=APackage.FindPkgFile(Filename,true,false);
|
||||
if PkgFile<>nil then begin
|
||||
MessageDlg(lisPkgMangFileIsAlreadyInPackage,
|
||||
Format(lisAF2PTheFileIsAlreadyInThePackage, ['"', Filename, '"', #13,
|
||||
@ -335,7 +335,7 @@ begin
|
||||
// skip readonly packages
|
||||
if APackage.ReadOnly then continue;
|
||||
// skip packages, that already contains the file
|
||||
if APackage.FindPkgFile(AFilename,false,true,false)<>nil then continue;
|
||||
if APackage.FindPkgFile(AFilename,true,false)<>nil then continue;
|
||||
if not ShowAllCheckBox.Checked then begin
|
||||
// skip packages, where the filename is not in the package directory
|
||||
// or one of its source directories
|
||||
|
@ -344,7 +344,7 @@ begin
|
||||
|
||||
// check if file already exists in package
|
||||
if FilenameIsAbsolute(AFilename) then begin
|
||||
PkgFile:=LazPackage.FindPkgFile(AFilename,true,true,false);
|
||||
PkgFile:=LazPackage.FindPkgFile(AFilename,true,false);
|
||||
if PkgFile<>nil then begin
|
||||
Msg:=Format(lisA2PFileAlreadyExistsInTheProject, ['"', AFilename, '"']);
|
||||
if PkgFile.Filename<>AFilename then
|
||||
@ -606,7 +606,7 @@ begin
|
||||
mtError,[mbCancel],0);
|
||||
exit;
|
||||
end;
|
||||
if LazPackage.FindPkgFile(Params.UnitFilename,true,true,false)<>nil then begin
|
||||
if LazPackage.FindPkgFile(Params.UnitFilename,true,false)<>nil then begin
|
||||
MessageDlg(lisA2PFileAlreadyInPackage,
|
||||
Format(lisA2PTheFileIsAlreadyInThePackage, ['"', Params.UnitFilename, '"']
|
||||
),
|
||||
@ -825,7 +825,7 @@ begin
|
||||
|
||||
NewFileType:=FileNameToPkgFileType(Filename);
|
||||
|
||||
if LazPackage.FindPkgFile(Filename,true,true,false)<>nil then begin
|
||||
if LazPackage.FindPkgFile(Filename,true,false)<>nil then begin
|
||||
// file already in package
|
||||
FilesListView.Items.Delete(i);
|
||||
continue;
|
||||
|
@ -723,8 +723,7 @@ type
|
||||
procedure ShortenFilename(var ExpandedFilename: string; UseUp: boolean);
|
||||
procedure LongenFilename(var AFilename: string);
|
||||
function FindPkgFile(const AFilename: string;
|
||||
ResolveLinks, IgnoreRemoved, FindNewFile: boolean
|
||||
): TPkgFile;
|
||||
IgnoreRemoved, FindNewFile: boolean): TPkgFile;
|
||||
function FindUnit(const TheUnitName: string): TPkgFile;
|
||||
function FindUnit(const TheUnitName: string; IgnoreRemoved: boolean): TPkgFile;
|
||||
function FindUnit(const TheUnitName: string; IgnoreRemoved: boolean;
|
||||
@ -2859,7 +2858,7 @@ begin
|
||||
end;
|
||||
|
||||
function TLazPackage.FindPkgFile(const AFilename: string;
|
||||
ResolveLinks, IgnoreRemoved, FindNewFile: boolean): TPkgFile;
|
||||
IgnoreRemoved, FindNewFile: boolean): TPkgFile;
|
||||
var
|
||||
TheFilename: String;
|
||||
Cnt: Integer;
|
||||
@ -2880,32 +2879,18 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
if ResolveLinks and FilenameIsAbsolute(TheFilename) then begin
|
||||
TheFilename:=ReadAllLinks(TheFilename,false);
|
||||
if TheFilename='' then TheFilename:=AFilename;
|
||||
end;
|
||||
Cnt:=FileCount;
|
||||
for i:=0 to Cnt-1 do begin
|
||||
Result:=Files[i];
|
||||
if ResolveLinks then begin
|
||||
if CompareFilenames(Result.GetResolvedFilename,TheFilename)=0 then
|
||||
exit;
|
||||
end else begin
|
||||
if CompareFilenames(Result.Filename,TheFilename)=0 then
|
||||
exit;
|
||||
end;
|
||||
if CompareFilenames(Result.Filename,TheFilename)=0 then
|
||||
exit;
|
||||
end;
|
||||
if not IgnoreRemoved then begin
|
||||
Cnt:=RemovedFilesCount;
|
||||
for i:=0 to Cnt-1 do begin
|
||||
Result:=RemovedFiles[i];
|
||||
if ResolveLinks then begin
|
||||
if CompareFilenames(Result.GetResolvedFilename,TheFilename)=0 then
|
||||
exit;
|
||||
end else begin
|
||||
if CompareFilenames(Result.Filename,TheFilename)=0 then
|
||||
exit;
|
||||
end;
|
||||
if CompareFilenames(Result.Filename,TheFilename)=0 then
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
Result:=nil;
|
||||
|
@ -980,7 +980,7 @@ procedure TPackageEditorForm.AddBitBtnClick(Sender: TObject);
|
||||
if AddParams.AutoAddLFMFile then begin
|
||||
NewLFMFilename:=ChangeFileExt(AddParams.UnitFilename,'.lfm');
|
||||
if FileExists(NewLFMFilename)
|
||||
and (LazPackage.FindPkgFile(NewLFMFilename,false,true,false)=nil) then
|
||||
and (LazPackage.FindPkgFile(NewLFMFilename,true,false)=nil) then
|
||||
LazPackage.AddFile(NewLFMFilename,'',pftLFM,[],cpNormal)
|
||||
else
|
||||
NewLFMFilename:='';
|
||||
@ -989,7 +989,7 @@ procedure TPackageEditorForm.AddBitBtnClick(Sender: TObject);
|
||||
if AddParams.AutoAddLRSFile then begin
|
||||
NewLRSFilename:=ChangeFileExt(AddParams.UnitFilename,'.lrs');
|
||||
if FileExists(NewLRSFilename)
|
||||
and (LazPackage.FindPkgFile(NewLRSFilename,false,true,false)=nil) then
|
||||
and (LazPackage.FindPkgFile(NewLRSFilename,true,false)=nil) then
|
||||
LazPackage.AddFile(NewLRSFilename,'',pftLRS,[],cpNormal)
|
||||
else
|
||||
NewLRSFilename:='';
|
||||
|
@ -200,19 +200,16 @@ type
|
||||
var File1: TPkgFile;
|
||||
var ConflictPkg: TLazPackage): boolean;
|
||||
function FindFileInAllPackages(const TheFilename: string;
|
||||
ResolveLinks, IgnoreDeleted,
|
||||
FindNewFile: boolean): TPkgFile;
|
||||
IgnoreDeleted, FindNewFile: boolean): TPkgFile;
|
||||
procedure FindPossibleOwnersOfUnit(const TheFilename: string;
|
||||
OwnerList: TFPList;
|
||||
ResolveLinks: boolean);
|
||||
OwnerList: TFPList);
|
||||
function FindLowestPkgNodeByName(const PkgName: string): TAVLTreeNode;
|
||||
function FindNextSameName(ANode: TAVLTreeNode): TAVLTreeNode;
|
||||
function FindNodeOfDependency(Dependency: TPkgDependency;
|
||||
Flags: TFindPackageFlags): TAVLTreeNode;
|
||||
function FindOpenPackage(Dependency: TPkgDependency;
|
||||
Flags: TFindPackageFlags): TLazPackage;
|
||||
function FindPackageWithFilename(const TheFilename: string;
|
||||
ResolveLinks: boolean): TLazPackage;
|
||||
function FindPackageWithFilename(const TheFilename: string): TLazPackage;
|
||||
function FindPackageWithID(PkgID: TLazPackageID): TLazPackage;
|
||||
function FindPackageWithIDMask(PkgIDMask: TLazPackageID): TLazPackage;
|
||||
function FindPackageProvidingName(FirstDependency: TPkgDependency;
|
||||
@ -984,14 +981,14 @@ begin
|
||||
end;
|
||||
|
||||
function TLazPackageGraph.FindFileInAllPackages(const TheFilename: string;
|
||||
ResolveLinks, IgnoreDeleted, FindNewFile: boolean): TPkgFile;
|
||||
IgnoreDeleted, FindNewFile: boolean): TPkgFile;
|
||||
var
|
||||
Cnt: Integer;
|
||||
i: Integer;
|
||||
begin
|
||||
Cnt:=Count;
|
||||
for i:=0 to Cnt-1 do begin
|
||||
Result:=Packages[i].FindPkgFile(TheFilename,ResolveLinks,IgnoreDeleted,
|
||||
Result:=Packages[i].FindPkgFile(TheFilename,IgnoreDeleted,
|
||||
FindNewFile);
|
||||
if Result<>nil then exit;
|
||||
end;
|
||||
@ -999,22 +996,16 @@ begin
|
||||
end;
|
||||
|
||||
procedure TLazPackageGraph.FindPossibleOwnersOfUnit(const TheFilename: string;
|
||||
OwnerList: TFPList; ResolveLinks: boolean);
|
||||
OwnerList: TFPList);
|
||||
var
|
||||
Cnt: Integer;
|
||||
i: Integer;
|
||||
AFilename: string;
|
||||
APackage: TLazPackage;
|
||||
PkgDirs: String;
|
||||
SrcDir: String;
|
||||
begin
|
||||
if not FilenameIsAbsolute(TheFilename) then exit;
|
||||
Cnt:=Count;
|
||||
AFilename:=TheFilename;
|
||||
if ResolveLinks then begin
|
||||
AFilename:=ReadAllLinks(TheFilename,false);
|
||||
if AFilename='' then AFilename:=TheFilename;
|
||||
end;
|
||||
SrcDir:=ExtractFilePath(TheFilename);
|
||||
for i:=0 to Cnt-1 do begin
|
||||
APackage:=Packages[i];
|
||||
@ -1030,29 +1021,18 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TLazPackageGraph.FindPackageWithFilename(const TheFilename: string;
|
||||
ResolveLinks: boolean): TLazPackage;
|
||||
function TLazPackageGraph.FindPackageWithFilename(const TheFilename: string
|
||||
): TLazPackage;
|
||||
var
|
||||
Cnt: Integer;
|
||||
i: Integer;
|
||||
AFilename: string;
|
||||
begin
|
||||
Cnt:=Count;
|
||||
AFilename:=TheFilename;
|
||||
if ResolveLinks then begin
|
||||
AFilename:=ReadAllLinks(TheFilename,false);
|
||||
if AFilename='' then AFilename:=TheFilename;
|
||||
end;
|
||||
for i:=0 to Cnt-1 do begin
|
||||
Result:=Packages[i];
|
||||
if Result.IsVirtual then continue;
|
||||
if ResolveLinks then begin
|
||||
if CompareFilenames(TheFilename,Result.GetResolvedFilename)=0 then
|
||||
exit;
|
||||
end else begin
|
||||
if CompareFilenames(TheFilename,Result.Filename)=0 then
|
||||
exit;
|
||||
end;
|
||||
if CompareFilenames(TheFilename,Result.Filename)=0 then
|
||||
exit;
|
||||
end;
|
||||
Result:=nil;
|
||||
end;
|
||||
|
@ -701,7 +701,7 @@ begin
|
||||
|
||||
Filename:=ActiveUnitInfo.Filename;
|
||||
|
||||
PkgFile:=PackageGraph.FindFileInAllPackages(Filename,false,true,
|
||||
PkgFile:=PackageGraph.FindFileInAllPackages(Filename,true,
|
||||
not ActiveUnitInfo.IsPartOfProject);
|
||||
if PkgFile=nil then begin
|
||||
IDEMessageDialog(lisProjAddPackageNotFound,
|
||||
@ -1157,7 +1157,7 @@ begin
|
||||
end;
|
||||
|
||||
// check file name conflicts with files in other packages
|
||||
PkgFile:=PackageGraph.FindFileInAllPackages(NewFilename,true,true,false);
|
||||
PkgFile:=PackageGraph.FindFileInAllPackages(NewFilename,true,false);
|
||||
if PkgFile<>nil then begin
|
||||
Result:=IDEMessageDialog(lisPkgMangFilenameIsUsedByOtherPackage,
|
||||
Format(lisPkgMangTheFileNameIsUsedByThePackageInFile, ['"',
|
||||
@ -1856,7 +1856,7 @@ var
|
||||
PkgFile: TPkgFile;
|
||||
begin
|
||||
Result:='';
|
||||
PkgFile:=PackageGraph.FindFileInAllPackages(Filename,false,true,true);
|
||||
PkgFile:=PackageGraph.FindFileInAllPackages(Filename,true,true);
|
||||
if PkgFile=nil then exit;
|
||||
APackage:=PkgFile.LazPackage;
|
||||
if APackage.AutoCreated or (not APackage.HasDirectory) then exit;
|
||||
@ -2381,7 +2381,7 @@ begin
|
||||
OpenEditor:=true;
|
||||
|
||||
// check if package is already loaded
|
||||
APackage:=PackageGraph.FindPackageWithFilename(AFilename,true);
|
||||
APackage:=PackageGraph.FindPackageWithFilename(AFilename);
|
||||
if (APackage=nil) or (pofRevert in Flags) then begin
|
||||
// package not yet loaded or it should be reloaded
|
||||
|
||||
@ -2707,13 +2707,13 @@ begin
|
||||
if (OldFilename=NewFilename) then
|
||||
exit;
|
||||
//debugln('TPkgManager.OnRenameFile A OldFilename="',OldFilename,'" New="',NewFilename,'"');
|
||||
OldPkgFile:=PackageGraph.FindFileInAllPackages(OldFilename,false,true,
|
||||
OldPkgFile:=PackageGraph.FindFileInAllPackages(OldFilename,true,
|
||||
not IsPartOfProject);
|
||||
if (OldPkgFile=nil) or (OldPkgFile.LazPackage.ReadOnly) then
|
||||
exit;
|
||||
OldPackage:=OldPkgFile.LazPackage;
|
||||
debugln('TPkgManager.OnRenameFile A OldPackage="',OldPackage.Name);
|
||||
NewPkgFile:=PackageGraph.FindFileInAllPackages(NewFilename,false,true,false);
|
||||
NewPkgFile:=PackageGraph.FindFileInAllPackages(NewFilename,true,false);
|
||||
if (NewPkgFile<>nil) and (OldPackage<>NewPkgFile.LazPackage) then exit;
|
||||
|
||||
Result:=IDEMessageDialog(lisPkgMangRenameFileInPackage,
|
||||
@ -3194,9 +3194,9 @@ begin
|
||||
|
||||
// find all packages owning file
|
||||
if piosfIncludeSourceDirectories in Flags then begin
|
||||
PackageGraph.FindPossibleOwnersOfUnit(UnitFilename,Result,false);
|
||||
PackageGraph.FindPossibleOwnersOfUnit(UnitFilename,Result);
|
||||
end else if not (piosfExcludeOwned in Flags) then begin
|
||||
PkgFile:=PackageGraph.FindFileInAllPackages(UnitFilename,false,true,true);
|
||||
PkgFile:=PackageGraph.FindFileInAllPackages(UnitFilename,true,true);
|
||||
if (PkgFile<>nil) and (PkgFile.LazPackage<>nil) then
|
||||
Result.Add(PkgFile.LazPackage);
|
||||
// check package source files (they usually do not have a TPkgFile)
|
||||
@ -3418,7 +3418,7 @@ begin
|
||||
end;
|
||||
|
||||
// check if file is already in a package
|
||||
PkgFile:=PackageGraph.FindFileInAllPackages(Filename,false,true,true);
|
||||
PkgFile:=PackageGraph.FindFileInAllPackages(Filename,true,true);
|
||||
if PkgFile<>nil then begin
|
||||
Result:=IDEMessageDialog(lisPkgMangFileIsAlreadyInPackage,
|
||||
Format(lisPkgMangTheFileIsAlreadyInThePackage, ['"', Filename, '"', #13,
|
||||
|
Loading…
Reference in New Issue
Block a user