IDE: removed auto resolving symlinks. Filenames must fit the search paths

git-svn-id: trunk@15795 -
This commit is contained in:
mattias 2008-07-16 23:22:54 +00:00
parent b38ec6cfc3
commit 19b259bb99
8 changed files with 41 additions and 72 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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:='';

View File

@ -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;

View File

@ -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,