make project, add an option to filter out by ext files located in the sourceDirectories

This commit is contained in:
Basile Burg 2022-07-03 12:57:00 +02:00
parent 093ffa54b3
commit e0b599aea9
2 changed files with 40 additions and 1 deletions

View File

@ -1,3 +1,14 @@
# v3.9.22-dev
## Enhancements
- Make projects, added the _excludedSourceExtensions_ options. It allows to filter out files that are in the
_sourceDirectories_ from the project inspector or from the list of files used to perform project wide searches.
## Regressions fixed
- Editor, line clicked when adding a breakpoint unexpectedly vertically centered (
# v3.9.21 # v3.9.21
## Bugs fixed ## Bugs fixed

View File

@ -16,14 +16,17 @@ TMakeProjectOptionsBase = class(TWritableLfmTextComponent)
strict private strict private
fNumThreads: integer; fNumThreads: integer;
fSourceDirectories: TStringList; fSourceDirectories: TStringList;
fExcludedSourceExtensions: TStringList;
fQuiet: boolean; fQuiet: boolean;
fKeepGoing: boolean; fKeepGoing: boolean;
procedure setSourceDirectories(value: TStringList); procedure setSourceDirectories(value: TStringList);
procedure setExcludedSourceExtensions(value: TStringList);
published published
property keepGoing: boolean read fKeepGoing write fKeepGoing default false; property keepGoing: boolean read fKeepGoing write fKeepGoing default false;
property quiet: boolean read fQuiet write fQuiet default false; property quiet: boolean read fQuiet write fQuiet default false;
property numThreads: integer read fNumThreads write fNumThreads default 1; property numThreads: integer read fNumThreads write fNumThreads default 1;
property sourceDirectories: TStringList read fSourceDirectories write setSourceDirectories; property sourceDirectories: TStringList read fSourceDirectories write setSourceDirectories;
property excludedSourceExtensions: TStringList read fExcludedSourceExtensions write setExcludedSourceExtensions;
public public
constructor create(aOwner: TComponent); override; constructor create(aOwner: TComponent); override;
destructor destroy(); override; destructor destroy(); override;
@ -152,11 +155,14 @@ begin
fNumThreads := 1; fNumThreads := 1;
fSourceDirectories := TStringList.Create; fSourceDirectories := TStringList.Create;
fSourceDirectories.AddStrings(['src', 'import', 'include']); fSourceDirectories.AddStrings(['src', 'import', 'include']);
fExcludedSourceExtensions := TStringList.Create;
fExcludedSourceExtensions.AddStrings(['.txt', '.md', '.gcov']);
end; end;
destructor TMakeProjectOptionsBase.destroy(); destructor TMakeProjectOptionsBase.destroy();
begin begin
fSourceDirectories.Free; fSourceDirectories.Free;
fExcludedSourceExtensions.Free;
inherited; inherited;
end; end;
@ -165,6 +171,11 @@ begin
fSourceDirectories.Assign(value); fSourceDirectories.Assign(value);
end; end;
procedure TMakeProjectOptionsBase.setExcludedSourceExtensions(value: TStringList);
begin
fExcludedSourceExtensions.Assign(value);
end;
procedure TMakeProjectOptionsBase.assign(other: TPersistent); procedure TMakeProjectOptionsBase.assign(other: TPersistent);
var var
src: TMakeProjectOptionsBase; src: TMakeProjectOptionsBase;
@ -173,6 +184,7 @@ begin
begin begin
src := TMakeProjectOptionsBase(other); src := TMakeProjectOptionsBase(other);
fSourceDirectories.Assign(src.sourceDirectories); fSourceDirectories.Assign(src.sourceDirectories);
fExcludedSourceExtensions.Assign(src.excludedSourceExtensions);
fQuiet:= src.fQuiet; fQuiet:= src.fQuiet;
fKeepGoing:= src.fKeepGoing; fKeepGoing:= src.fKeepGoing;
fNumThreads:= src.fNumThreads; fNumThreads:= src.fNumThreads;
@ -291,8 +303,11 @@ var
hidden: string = DirectorySeparator + '.'; hidden: string = DirectorySeparator + '.';
f: string; f: string;
p: string; p: string;
e: string;
s: string;
colPos: integer; colPos: integer;
i: integer; i: integer;
badExt: boolean;
begin begin
fRules.Clear; fRules.Clear;
fRules.add('default'); fRules.add('default');
@ -330,8 +345,21 @@ begin
begin begin
listFiles(srcs, fBasePath + p, true); listFiles(srcs, fBasePath + p, true);
for f in srcs do for f in srcs do
begin
if pos(hidden, f) = 0 then if pos(hidden, f) = 0 then
begin
badExt := false;
s := f.extractFileExt();
for e in makeProjectOptions.excludedSourceExtensions do
if SameText(e, s) then
begin
badExt := true;
break;
end;
if not badExt then
fSrcs.Add(f[fBasePath.length + 1 .. f.length]); fSrcs.Add(f[fBasePath.length + 1 .. f.length]);
end;
end;
srcs.Clear; srcs.Clear;
end; end;
finally finally