mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-12 09:56:12 +02:00
codetools: star directories: added excludes and enabled
This commit is contained in:
parent
1a61c0469e
commit
41d9d4c12f
@ -317,9 +317,11 @@ type
|
|||||||
FOnGetString: TCTDirCacheGetString;
|
FOnGetString: TCTDirCacheGetString;
|
||||||
FOnGetUnitFromSet: TCTGetUnitFromSet;
|
FOnGetUnitFromSet: TCTGetUnitFromSet;
|
||||||
FOnIterateFPCUnitsFromSet: TCTIterateFPCUnitsFromSet;
|
FOnIterateFPCUnitsFromSet: TCTIterateFPCUnitsFromSet;
|
||||||
|
FStarDirectoryExcludes: TStrings;
|
||||||
procedure DoRemove(ACache: TCTDirectoryCache);
|
procedure DoRemove(ACache: TCTDirectoryCache);
|
||||||
procedure OnFileStateCacheChangeTimeStamp(Sender: TObject;
|
procedure OnFileStateCacheChangeTimeStamp(Sender: TObject;
|
||||||
const AFilename: string);
|
const AFilename: string);
|
||||||
|
procedure SetStarDirectoryExcludes(const AValue: TStrings);
|
||||||
public
|
public
|
||||||
constructor Create;
|
constructor Create;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
@ -377,6 +379,7 @@ type
|
|||||||
read FOnGetCompiledUnitFromSet write FOnGetCompiledUnitFromSet;
|
read FOnGetCompiledUnitFromSet write FOnGetCompiledUnitFromSet;
|
||||||
property OnIterateFPCUnitsFromSet: TCTIterateFPCUnitsFromSet
|
property OnIterateFPCUnitsFromSet: TCTIterateFPCUnitsFromSet
|
||||||
read FOnIterateFPCUnitsFromSet write FOnIterateFPCUnitsFromSet;
|
read FOnIterateFPCUnitsFromSet write FOnIterateFPCUnitsFromSet;
|
||||||
|
property StarDirectoryExcludes: TStrings read FStarDirectoryExcludes write SetStarDirectoryExcludes;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function CompareCTDirectoryCaches(Data1, Data2: Pointer): integer;
|
function CompareCTDirectoryCaches(Data1, Data2: Pointer): integer;
|
||||||
@ -2154,6 +2157,17 @@ var
|
|||||||
WorkingListing: PWorkStarFileInfo;
|
WorkingListing: PWorkStarFileInfo;
|
||||||
WorkingListingCount: integer;
|
WorkingListingCount: integer;
|
||||||
WorkingListingCapacity: integer;
|
WorkingListingCapacity: integer;
|
||||||
|
Excludes: TStrings;
|
||||||
|
|
||||||
|
function IsExcluded(const CurSubDir: string): boolean;
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
for i:=0 to Excludes.Count-1 do
|
||||||
|
if FilenameIsMatching(Excludes[i],CurSubDir,true) then
|
||||||
|
exit(true);
|
||||||
|
Result:=false;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TraverseDir(const CurSubDir: string; Level: integer);
|
procedure TraverseDir(const CurSubDir: string; Level: integer);
|
||||||
var
|
var
|
||||||
@ -2163,6 +2177,8 @@ var
|
|||||||
i, NewCapacity: Integer;
|
i, NewCapacity: Integer;
|
||||||
WorkingItem: PWorkStarFileInfo;
|
WorkingItem: PWorkStarFileInfo;
|
||||||
begin
|
begin
|
||||||
|
if IsExcluded(CurSubDir) then exit;
|
||||||
|
|
||||||
if Level=0 then
|
if Level=0 then
|
||||||
SubDirIndex:=-1
|
SubDirIndex:=-1
|
||||||
else
|
else
|
||||||
@ -2229,6 +2245,7 @@ begin
|
|||||||
WorkingListingCount:=0;
|
WorkingListingCount:=0;
|
||||||
WorkingListingCapacity:=0;
|
WorkingListingCapacity:=0;
|
||||||
try
|
try
|
||||||
|
Excludes:=Pool.StarDirectoryExcludes;
|
||||||
TraverseDir('',0);
|
TraverseDir('',0);
|
||||||
|
|
||||||
if WorkingListingCount=0 then exit;
|
if WorkingListingCount=0 then exit;
|
||||||
@ -2415,6 +2432,14 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCTDirectoryCachePool.SetStarDirectoryExcludes(const AValue: TStrings
|
||||||
|
);
|
||||||
|
begin
|
||||||
|
if FStarDirectoryExcludes.Equals(AValue) then Exit;
|
||||||
|
FStarDirectoryExcludes.Assign(AValue);
|
||||||
|
IncreaseConfigTimeStamp;
|
||||||
|
end;
|
||||||
|
|
||||||
constructor TCTDirectoryCachePool.Create;
|
constructor TCTDirectoryCachePool.Create;
|
||||||
var
|
var
|
||||||
sk: TCTStarDirectoryKind;
|
sk: TCTStarDirectoryKind;
|
||||||
@ -2426,6 +2451,8 @@ begin
|
|||||||
IncreaseConfigTimeStamp;
|
IncreaseConfigTimeStamp;
|
||||||
if FileStateCache<>nil then
|
if FileStateCache<>nil then
|
||||||
FileStateCache.AddChangeTimeStampHandler(@OnFileStateCacheChangeTimeStamp);
|
FileStateCache.AddChangeTimeStampHandler(@OnFileStateCacheChangeTimeStamp);
|
||||||
|
FStarDirectoryExcludes:=TStringListUTF8Fast.Create;
|
||||||
|
FStarDirectoryExcludes.Delimiter:=';';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TCTDirectoryCachePool.Destroy;
|
destructor TCTDirectoryCachePool.Destroy;
|
||||||
@ -2448,6 +2475,7 @@ begin
|
|||||||
FStarDirectories[sk].Free;
|
FStarDirectories[sk].Free;
|
||||||
FStarDirectories[sk]:=nil;
|
FStarDirectories[sk]:=nil;
|
||||||
end;
|
end;
|
||||||
|
FreeAndNil(FStarDirectoryExcludes);
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -2750,11 +2778,7 @@ function TCTDirectoryCachePool.FindIncludeFileInDirectory(Directory,
|
|||||||
var
|
var
|
||||||
Cache: TCTDirectoryBaseCache;
|
Cache: TCTDirectoryBaseCache;
|
||||||
begin
|
begin
|
||||||
{$IFDEF EnableStarStarPath}
|
|
||||||
Cache:=GetBaseCache(Directory,true);
|
Cache:=GetBaseCache(Directory,true);
|
||||||
{$ELSE}
|
|
||||||
Cache:=GetCache(Directory,true,false);
|
|
||||||
{$ENDIF}
|
|
||||||
Result:=Cache.FindIncludeFile(IncFileName,AnyCase);
|
Result:=Cache.FindIncludeFile(IncFileName,AnyCase);
|
||||||
if Result='' then exit;
|
if Result='' then exit;
|
||||||
Result:=Cache.Directory+Result;
|
Result:=Cache.Directory+Result;
|
||||||
@ -2765,11 +2789,7 @@ function TCTDirectoryCachePool.FindUnitInDirectory(const Directory,
|
|||||||
var
|
var
|
||||||
Cache: TCTDirectoryBaseCache;
|
Cache: TCTDirectoryBaseCache;
|
||||||
begin
|
begin
|
||||||
{$IFDEF EnableStarStarPath}
|
|
||||||
Cache:=GetBaseCache(Directory,true);
|
Cache:=GetBaseCache(Directory,true);
|
||||||
{$ELSE}
|
|
||||||
Cache:=GetCache(Directory,true,false);
|
|
||||||
{$ENDIF}
|
|
||||||
Result:=Cache.FindUnitSource(AUnitName,AnyCase);
|
Result:=Cache.FindUnitSource(AUnitName,AnyCase);
|
||||||
if Result='' then exit;
|
if Result='' then exit;
|
||||||
Result:=Cache.Directory+Result;
|
Result:=Cache.Directory+Result;
|
||||||
|
Loading…
Reference in New Issue
Block a user