sorted IDE macros

git-svn-id: trunk@9796 -
This commit is contained in:
mattias 2006-09-02 21:10:32 +00:00
parent cdb8224a6c
commit b45d740067
9 changed files with 144 additions and 142 deletions

View File

@ -40,7 +40,7 @@ interface
uses
Classes, SysUtils, LCLProc, Controls, Dialogs, Graphics, ExtCtrls, Buttons,
Menus, LResources, AVL_Tree,
PropEdits, FormEditingIntf, LazIDEIntf,
PropEdits, FormEditingIntf, LazIDEIntf, MacroIntf,
{$IFDEF CustomIDEComps}
CustomIDEComps,
{$ENDIF}
@ -189,7 +189,7 @@ begin
OpenPackageMenuItem.Visible:=true;
ShownFilename:=PkgComponent.PkgFile.Filename;
UnitFilename:=APackage.SubstitutePkgMacro(ShownFilename,true);
LazarusIDE.SubstituteMacros(UnitFilename);
IDEMacros.SubstituteMacros(UnitFilename);
if not FileExists(UnitFilename) then begin
UnitFilename:=LazarusIDE.FindSourceFile(ExtractFilename(UnitFilename),
APackage.Directory,[]);

View File

@ -253,7 +253,7 @@ end;
function TIDEHelpDatabases.SubstituteMacros(var s: string): boolean;
begin
Result:=LazarusIDE.SubstituteMacros(s);
Result:=IDEMacros.SubstituteMacros(s);
end;
{ THelpManager }

View File

@ -38,7 +38,7 @@ unit IDEDefs;
interface
uses
Classes, SysUtils, Menus;
Classes, SysUtils, Menus, MacroIntf;
type
TIDEFileStateFlag = (
@ -55,7 +55,7 @@ type
TGetIDEFileStateEvent = procedure(Sender: TObject; const Filename: string;
NeededFlags: TIDEFileStateFlags; var ResultFlags: TIDEFileStateFlags)
of object;
implementation
end.

View File

@ -32,7 +32,8 @@ program lazbuild;
uses
Classes, SysUtils, CustApp, LCLProc, Forms, Controls, FileUtil,
CodeToolManager,
InitialSetupDlgs, OutputFilter, Compiler,
MacroIntf,
IDEProcs, InitialSetupDlgs, OutputFilter, Compiler,
EnvironmentOpts, IDETranslations, LazarusIDEStrConsts, LazConf, MainIntf,
BasePkgManager, PackageDefs, PackageLinks, PackageSystem;
@ -59,6 +60,8 @@ type
var Directory: string);
procedure GetWritablePkgOutputDirectory(APackage: TLazPackage;
var AnOutDirectory: string);
// package graph
procedure PackageGraphAddPackage(Pkg: TLazPackage);
protected
function BuildFile(Filename: string): boolean;
function BuildPackage(const Filename: string): boolean;
@ -119,13 +122,18 @@ begin
// output directory is not writable
// -> redirect to config directory
NewOutDir:=SetDirSeparators('/$(TargetCPU)-$(TargetOS)');
MacroList.SubstituteStr(NewOutDir);
IDEMacros.SubstituteMacros(NewOutDir);
NewOutDir:=TrimFilename(GetPrimaryConfigPath+PathDelim+'lib'+PathDelim
+APackage.Name+NewOutDir);
AnOutDirectory:=NewOutDir;
//debugln('TPkgManager.GetWritablePkgOutputDirectory APackage=',APackage.IDAsString,' AnOutDirectory="',AnOutDirectory,'"');
end;
procedure TLazBuildApplication.PackageGraphAddPackage(Pkg: TLazPackage);
begin
if FileExists(Pkg.FileName) then PkgLinks.AddUserLink(Pkg);
end;
function TLazBuildApplication.BuildFile(Filename: string): boolean;
begin
Result:=false;
@ -243,16 +251,16 @@ begin
// package links
PkgLinks:=TPackageLinks.Create;
PkgLinks.UpdateAll;
PkgLinks.DependencyOwnerGetPkgFilename:=@PkgLinksDependencyOwnerGetPkgFilename;
//PkgLinks.DependencyOwnerGetPkgFilename:=@PkgLinksDependencyOwnerGetPkgFilename;
// package graph
PackageGraph:=TLazPackageGraph.Create;
PackageGraph.OnChangePackageName:=@PackageGraphChangePackageName;
//PackageGraph.OnChangePackageName:=@PackageGraphChangePackageName;
PackageGraph.OnAddPackage:=@PackageGraphAddPackage;
PackageGraph.OnDeletePackage:=@PackageGraphDeletePackage;
PackageGraph.OnDependencyModified:=@PackageGraphDependencyModified;
PackageGraph.OnBeginUpdate:=@PackageGraphBeginUpdate;
PackageGraph.OnEndUpdate:=@PackageGraphEndUpdate;
//PackageGraph.OnDeletePackage:=@PackageGraphDeletePackage;
//PackageGraph.OnDependencyModified:=@PackageGraphDependencyModified;
//PackageGraph.OnBeginUpdate:=@PackageGraphBeginUpdate;
//PackageGraph.OnEndUpdate:=@PackageGraphEndUpdate;
// package macros
{CodeToolBoss.DefineTree.MacroFunctions.AddExtended(

View File

@ -880,9 +880,6 @@ type
procedure SaveEnvironment; override;
procedure LoadDesktopSettings(TheEnvironmentOptions: TEnvironmentOptions);
procedure SaveDesktopSettings(TheEnvironmentOptions: TEnvironmentOptions);
// macros
function SubstituteMacros(var s: string): boolean; override;
end;
@ -1190,7 +1187,7 @@ begin
FreeThenNil(TheCompiler);
FreeThenNil(HiddenWindowsOnRun);
FreeThenNil(TheOutputFilter);
FreeThenNil(MacroList);
FreeThenNil(GlobalMacroList);
FreeThenNil(IDEMacros);
FreeThenNil(IDECodeMacros);
FreeThenNil(LazProjectFileDescriptors);
@ -1589,70 +1586,74 @@ end;
procedure TMainIDE.SetupTransferMacros;
begin
MacroList:=TTransferMacroList.Create;
GlobalMacroList:=TTransferMacroList.Create;
IDEMacros:=TLazIDEMacros.Create;
MacroList.Add(TTransferMacro.Create('Col','',
lisCursorColumnInCurrentEditor,nil,[]));
MacroList.Add(TTransferMacro.Create('Row','',
lisCursorRowInCUrrentEditor,nil,[]));
MacroList.Add(TTransferMacro.Create('CompPath','',
lisCompilerFilename,nil,[]));
MacroList.Add(TTransferMacro.Create('CurToken','',
lisWordAtCursorInCurrentEditor,nil,[]));
MacroList.Add(TTransferMacro.Create('EdFile','',
lisExpandedFilenameOfCurrentEditor,nil,[]));
MacroList.Add(TTransferMacro.Create('FPCSrcDir','',
lisFreePascalSourceDirectory,nil,[]));
MacroList.Add(TTransferMacro.Create('LazarusDir','',
lisLazarusDirectory,nil,[]));
MacroList.Add(TTransferMacro.Create('LCLWidgetType','',
lisLCLWidgetType,nil,[]));
MacroList.Add(TTransferMacro.Create('TargetCPU','',
lisTargetCPU,nil,[]));
MacroList.Add(TTransferMacro.Create('TargetOS','',
lisTargetOS,nil,[]));
MacroList.Add(TTransferMacro.Create('LanguageID','',
lisLazarusLanguageID,nil,[]));
MacroList.Add(TTransferMacro.Create('LanguageName','',
lisLazarusLanguageName,nil,[]));
MacroList.Add(TTransferMacro.Create('Params','',
lisCommandLineParamsOfProgram,nil,[]));
MacroList.Add(TTransferMacro.Create('Prompt','',
lisPromptForValue,@OnMacroPromptFunction,[tmfInteractive]));
MacroList.Add(TTransferMacro.Create('ProjFile','',
lisProjectFilename,nil,[]));
MacroList.Add(TTransferMacro.Create('ProjPath','',
lisProjectDirectory,nil,[]));
MacroList.Add(TTransferMacro.Create('Save','',
lisSaveCurrentEditorFile,nil,[tmfInteractive]));
MacroList.Add(TTransferMacro.Create('SaveAll','',
lisSaveAllModified,nil,[tmfInteractive]));
MacroList.Add(TTransferMacro.Create('TargetFile','',
lisTargetFilenameOfProject,nil,[]));
MacroList.Add(TTransferMacro.Create('TargetCmdLine','',
lisTargetFilenamePlusParams,nil,[]));
MacroList.Add(TTransferMacro.Create('TestDir','',
lisTestDirectory,nil,[]));
MacroList.Add(TTransferMacro.Create('RunCmdLine','',
lisLaunchingCmdLine,nil,[]));
MacroList.Add(TTransferMacro.Create('ProjPublishDir','',
lisPublishProjDir,nil,[]));
MacroList.Add(TTransferMacro.Create('ProjUnitPath','',
lisProjectUnitPath,nil,[]));
MacroList.Add(TTransferMacro.Create('ProjIncPath','',
lisProjectIncPath,nil,[]));
MacroList.Add(TTransferMacro.Create('ProjSrcPath','',
lisProjectSrcPath,nil,[]));
MacroList.Add(TTransferMacro.Create('ConfDir','',
lisProjectSrcPath,nil,[]));
MacroList.Add(TTransferMacro.Create('MakeExe','',
lisMakeExe,@OnMacroFuncMakeExe,[]));
MacroList.Add(TTransferMacro.Create('Project','',
lisProjectMacroProperties,@OnMacroFuncProject,[]));
MacroList.OnSubstitution:=@OnMacroSubstitution;
CompilerOptions.OnParseString:=@OnSubstituteCompilerOption;
GlobalMacroList.OnSubstitution:=@OnMacroSubstitution;
// source editor
GlobalMacroList.Add(TTransferMacro.Create('Col','',
lisCursorColumnInCurrentEditor,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('Row','',
lisCursorRowInCUrrentEditor,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('CurToken','',
lisWordAtCursorInCurrentEditor,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('EdFile','',
lisExpandedFilenameOfCurrentEditor,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('Prompt','',
lisPromptForValue,@OnMacroPromptFunction,[tmfInteractive]));
GlobalMacroList.Add(TTransferMacro.Create('Save','',
lisSaveCurrentEditorFile,nil,[tmfInteractive]));
GlobalMacroList.Add(TTransferMacro.Create('SaveAll','',
lisSaveAllModified,nil,[tmfInteractive]));
// environment
GlobalMacroList.Add(TTransferMacro.Create('CompPath','',
lisCompilerFilename,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('FPCSrcDir','',
lisFreePascalSourceDirectory,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('LazarusDir','',
lisLazarusDirectory,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('LanguageID','',
lisLazarusLanguageID,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('LanguageName','',
lisLazarusLanguageName,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('TestDir','',
lisTestDirectory,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('ConfDir','',
lisProjectSrcPath,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('MakeExe','',
lisMakeExe,@OnMacroFuncMakeExe,[]));
// project
GlobalMacroList.Add(TTransferMacro.Create('LCLWidgetType','',
lisLCLWidgetType,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('TargetCPU','',
lisTargetCPU,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('TargetOS','',
lisTargetOS,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('Params','',
lisCommandLineParamsOfProgram,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('ProjFile','',
lisProjectFilename,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('ProjPath','',
lisProjectDirectory,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('TargetFile','',
lisTargetFilenameOfProject,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('TargetCmdLine','',
lisTargetFilenamePlusParams,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('RunCmdLine','',
lisLaunchingCmdLine,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('ProjPublishDir','',
lisPublishProjDir,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('ProjUnitPath','',
lisProjectUnitPath,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('ProjIncPath','',
lisProjectIncPath,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('ProjSrcPath','',
lisProjectSrcPath,nil,[]));
GlobalMacroList.Add(TTransferMacro.Create('Project','',
lisProjectMacroProperties,@OnMacroFuncProject,[]));
// projects macro functions
CodeToolBoss.DefineTree.MacroFunctions.AddExtended(
@ -2308,7 +2309,7 @@ end;
procedure TMainIDE.mnuCleanDirectoryClicked(Sender: TObject);
begin
ShowCleanDirectoryDialog(Project1.ProjectDirectory,MacroList);
ShowCleanDirectoryDialog(Project1.ProjectDirectory,GlobalMacroList);
end;
Procedure TMainIDE.OnSrcNotebookFileNew(Sender: TObject);
@ -3311,7 +3312,7 @@ end;
procedure TMainIDE.mnuToolConfigureClicked(Sender: TObject);
begin
if ShowExtToolDialog(EnvironmentOptions.ExternalTools,MacroList)=mrOk then
if ShowExtToolDialog(EnvironmentOptions.ExternalTools,GlobalMacroList)=mrOk then
begin
// save to enviroment options
SaveDesktopSettings(EnvironmentOptions);
@ -3542,11 +3543,6 @@ begin
end;
end;
function TMainIDE.SubstituteMacros(var s: string): boolean;
begin
Result:=MacroList.SubstituteStr(s);
end;
procedure TMainIDE.LoadDesktopSettings(
TheEnvironmentOptions: TEnvironmentOptions);
begin
@ -3717,7 +3713,7 @@ end;
procedure TMainIDE.mnuEnvCodeToolsDefinesEditorClicked(Sender: TObject);
begin
ShowCodeToolsDefinesEditor(CodeToolBoss,CodeToolsOpts,MacroList);
ShowCodeToolsDefinesEditor(CodeToolBoss,CodeToolsOpts,GlobalMacroList);
end;
procedure TMainIDE.mnuEnvRescanFPCSrcDirClicked(Sender: TObject);
@ -5583,7 +5579,7 @@ begin
// convert macros in filename
if nfConvertMacros in NewFlags then begin
if not MacroList.SubstituteStr(NewFilename) then begin
if not GlobalMacroList.SubstituteStr(NewFilename) then begin
Result:=mrCancel;
exit;
end;
@ -6004,7 +6000,7 @@ begin
// replace macros
if ofConvertMacros in Flags then begin
if not MacroList.SubstituteStr(AFilename) then exit;
if not GlobalMacroList.SubstituteStr(AFilename) then exit;
AFilename:=ExpandFilename(AFilename);
end;
@ -7562,7 +7558,7 @@ begin
CheckCompilerOptsDlg:=TCheckCompilerOptsDlg.Create(nil);
try
CheckCompilerOptsDlg.Options:=TheCompilerOptions;
CheckCompilerOptsDlg.MacroList:=MacroList;
CheckCompilerOptsDlg.MacroList:=GlobalMacroList;
Result:=CheckCompilerOptsDlg.ShowModal;
finally
FreeThenNil(CheckCompilerOptsDlg);
@ -7773,7 +7769,7 @@ begin
WorkingDir:=Project1.RunParameterOptions.WorkingDirectory;
if WorkingDir='' then
WorkingDir:=ExtractFilePath(GetProjectTargetFilename);
if not MacroList.SubstituteStr(WorkingDir) then begin
if not GlobalMacroList.SubstituteStr(WorkingDir) then begin
Result:=mrCancel;
exit;
end;
@ -7919,7 +7915,7 @@ end;
function TMainIDE.DoRunExternalTool(Index: integer): TModalResult;
begin
SourceNotebook.ClearErrorLines;
Result:=EnvironmentOptions.ExternalTools.Run(Index,MacroList);
Result:=EnvironmentOptions.ExternalTools.Run(Index,GlobalMacroList);
DoCheckFilesOnDisk;
end;
@ -7952,7 +7948,7 @@ begin
// save extra options
IDEBuildFlags:=Flags+[blfOnlyIDE];
Result:=SaveIDEMakeOptions(MiscellaneousOptions.BuildLazOpts,
MacroList,PkgOptions,IDEBuildFlags);
GlobalMacroList,PkgOptions,IDEBuildFlags);
if Result<>mrOk then exit;
end;
@ -7979,7 +7975,7 @@ begin
// first compile all lazarus components (LCL, SynEdit, CodeTools, ...)
SourceNotebook.ClearErrorLines;
Result:=BuildLazarus(MiscellaneousOptions.BuildLazOpts,
EnvironmentOptions.ExternalTools,MacroList,
EnvironmentOptions.ExternalTools,GlobalMacroList,
'',EnvironmentOptions.CompilerFilename,
EnvironmentOptions.MakeFilename,
Flags+[blfWithoutLinkingIDE]);
@ -8033,7 +8029,7 @@ begin
// save extra options
IDEBuildFlags:=Flags+[blfOnlyIDE];
Result:=SaveIDEMakeOptions(MiscellaneousOptions.BuildLazOpts,
MacroList,PkgOptions,IDEBuildFlags);
GlobalMacroList,PkgOptions,IDEBuildFlags);
if Result<>mrOk then begin
DebugLn('TMainIDE.DoBuildLazarus: Save IDEMake options failed.');
exit;
@ -8042,7 +8038,7 @@ begin
// make ide
SourceNotebook.ClearErrorLines;
Result:=BuildLazarus(MiscellaneousOptions.BuildLazOpts,
EnvironmentOptions.ExternalTools,MacroList,
EnvironmentOptions.ExternalTools,GlobalMacroList,
PkgOptions,EnvironmentOptions.CompilerFilename,
EnvironmentOptions.MakeFilename,
IDEBuildFlags+[blfUseMakeIDECfg,blfDontClean]);
@ -8090,7 +8086,7 @@ begin
ExtTool.CmdLineParams:=Params;
// run
Result:=EnvironmentOptions.ExternalTools.Run(ExtTool,MacroList);
Result:=EnvironmentOptions.ExternalTools.Run(ExtTool,GlobalMacroList);
finally
// clean up
ExtTool.Free;
@ -8127,14 +8123,14 @@ begin
'');
if BuildWorkingDir='' then
BuildWorkingDir:=ExtractFilePath(ActiveUnitInfo.Filename);
if not MacroList.SubstituteStr(BuildWorkingDir) then begin
if not GlobalMacroList.SubstituteStr(BuildWorkingDir) then begin
Result:=mrCancel;
exit;
end;
BuildCommand:=GetIDEStringDirective(DirectiveList,
IDEDirectiveNames[idedBuildCommand],
IDEDirDefaultBuildCommand);
if (not MacroList.SubstituteStr(BuildCommand))
if (not GlobalMacroList.SubstituteStr(BuildCommand))
or (BuildCommand='') then begin
Result:=mrCancel;
exit;
@ -8165,7 +8161,7 @@ begin
ExtTool.CmdLineParams:=Params;
// run
Result:=EnvironmentOptions.ExternalTools.Run(ExtTool,MacroList);
Result:=EnvironmentOptions.ExternalTools.Run(ExtTool,GlobalMacroList);
finally
// clean up
ExtTool.Free;
@ -8214,14 +8210,14 @@ begin
IDEDirectiveNames[idedRunWorkingDir],'');
if RunWorkingDir='' then
RunWorkingDir:=ExtractFilePath(ActiveUnitInfo.Filename);
if not MacroList.SubstituteStr(RunWorkingDir) then begin
if not GlobalMacroList.SubstituteStr(RunWorkingDir) then begin
Result:=mrCancel;
exit;
end;
RunCommand:=GetIDEStringDirective(DirectiveList,
IDEDirectiveNames[idedRunCommand],
IDEDirDefaultRunCommand);
if (not MacroList.SubstituteStr(RunCommand))
if (not GlobalMacroList.SubstituteStr(RunCommand))
or (RunCommand='') then begin
Result:=mrCancel;
exit;
@ -8247,7 +8243,7 @@ begin
ExtTool.CmdLineParams:=Params;
// run
Result:=EnvironmentOptions.ExternalTools.Run(ExtTool,MacroList);
Result:=EnvironmentOptions.ExternalTools.Run(ExtTool,GlobalMacroList);
finally
// clean up
ExtTool.Free;
@ -8282,7 +8278,7 @@ begin
BuildFileDialog.DirectiveList:=DirectiveList;
BuildFileDialog.BuildFileIfActive:=ActiveUnitInfo.BuildFileIfActive;
BuildFileDialog.RunFileIfActive:=ActiveUnitInfo.RunFileIfActive;
BuildFileDialog.MacroList:=MacroList;
BuildFileDialog.MacroList:=GlobalMacroList;
BuildFileDialog.Filename:=
CreateRelativePath(ActiveUnitInfo.Filename,Project1.ProjectDirectory);
if BuildFileDialog.ShowModal<>mrOk then begin
@ -8547,7 +8543,7 @@ end;
function TMainIDE.RunExternalTool(Tool: TIDEExternalToolOptions): TModalResult;
begin
SourceNotebook.ClearErrorLines;
Result:=EnvironmentOptions.ExternalTools.Run(Tool,MacroList);
Result:=EnvironmentOptions.ExternalTools.Run(Tool,GlobalMacroList);
DoCheckFilesOnDisk;
end;
@ -9021,7 +9017,7 @@ begin
// check command after
CommandAfter:=Options.CommandAfter;
if not MacroList.SubstituteStr(CommandAfter) then begin
if not GlobalMacroList.SubstituteStr(CommandAfter) then begin
Result:=mrCancel;
exit;
end;
@ -9091,7 +9087,7 @@ begin
Tool.Title:=lisCommandAfterPublishingModule;
Tool.WorkingDirectory:=DestDir;
Tool.CmdLineParams:=CmdAfterParams;
Result:=EnvironmentOptions.ExternalTools.Run(Tool,MacroList);
Result:=EnvironmentOptions.ExternalTools.Run(Tool,GlobalMacroList);
if Result<>mrOk then exit;
end else begin
ShowErrorForCommandAfter;
@ -9398,9 +9394,9 @@ begin
CurrentParsedCompilerOption:=Options;
Result:=UnparsedValue;
if PlatformIndependent then
MacroList.SubstituteStr(Result,CompilerOptionMacroPlatformIndependent)
GlobalMacroList.SubstituteStr(Result,CompilerOptionMacroPlatformIndependent)
else
MacroList.SubstituteStr(Result,CompilerOptionMacroNormal);
GlobalMacroList.SubstituteStr(Result,CompilerOptionMacroNormal);
end;
function TMainIDE.OnMacroPromptFunction(const s:string;
@ -9484,7 +9480,7 @@ end;
procedure TMainIDE.OnCmdLineCreate(var CmdLine: string; var Abort:boolean);
// replace all transfer macros in command line
begin
Abort:=not MacroList.SubstituteStr(CmdLine);
Abort:=not GlobalMacroList.SubstituteStr(CmdLine);
end;
procedure TMainIDE.GetIDEFileState(Sender: TObject; const AFilename: string;
@ -9859,7 +9855,7 @@ begin
if Result=''
then begin
Result:=Project1.RunParameterOptions.CmdLineParams;
if MacroList.SubstituteStr(Result) then begin
if GlobalMacroList.SubstituteStr(Result) then begin
TargetFileName:='"'+GetProjectTargetFilename+'"';
if Result='' then
Result:=TargetFileName
@ -9868,14 +9864,14 @@ begin
end else
Result:='';
end else begin
if not MacroList.SubstituteStr(Result) then Result:='';
if not GlobalMacroList.SubstituteStr(Result) then Result:='';
end;
end;
function TMainIDE.GetProjPublishDir: string;
begin
Result:=Project1.PublishOptions.DestinationDirectory;
if MacroList.SubstituteStr(Result) then begin
if GlobalMacroList.SubstituteStr(Result) then begin
if FilenameIsAbsolute(Result) then begin
Result:=AppendPathDelim(TrimFilename(Result));
end else begin
@ -11173,7 +11169,7 @@ var
if (Options.ExtraFiles=nil) then begin
for i:=0 to Options.ExtraFiles.Count-1 do begin
CurFileMask:=Options.ExtraFiles[i];
if not MacroList.SubstituteStr(CurFileMask) then exit;
if not GlobalMacroList.SubstituteStr(CurFileMask) then exit;
if SysUtils.FindFirst(CurFileMask,faAnyFile,FileInfo)=0
then begin
CurDirectory:=AppendPathDelim(ExtractFilePath(CurFileMask));

View File

@ -118,7 +118,6 @@ type
function GetToolStatus: TIDEToolStatus; virtual; abstract;
function GetActiveProject: TLazProject; override;
public
MacroList: TTransferMacroList;
HiddenWindowsOnRun: TList; // list of forms, that were automatically hidden
// and will be shown when debugged program stops
@ -287,16 +286,6 @@ type
end;
{ TLazIDEMacros }
type
TLazIDEMacros = class(TIDEMacros)
public
function StrHasMacros(const s: string): boolean; override;
function SubstituteMacros(var s: string): boolean; override;
end;
implementation
@ -330,18 +319,6 @@ begin
Result:='['+Result+']';
end;
{ TLazIDEMacros }
function TLazIDEMacros.StrHasMacros(const s: string): boolean;
begin
Result:=MainIDEInterface.MacroList.StrHasMacros(s);
end;
function TLazIDEMacros.SubstituteMacros(var s: string): boolean;
begin
Result:=MainIDEInterface.MacroList.SubstituteStr(s);
end;
{ TMainIDEInterface }
function TMainIDEInterface.GetActiveProject: TLazProject;

View File

@ -108,6 +108,18 @@ type
write SetMarkUnhandledMacros;
end;
{ TLazIDEMacros }
type
TLazIDEMacros = class(TIDEMacros)
public
function StrHasMacros(const s: string): boolean; override;
function SubstituteMacros(var s: string): boolean; override;
end;
var
GlobalMacroList: TTransferMacroList = nil;
implementation
var
@ -488,6 +500,18 @@ begin
Result:=TrimFilename(Filename);
end;
{ TLazIDEMacros }
function TLazIDEMacros.StrHasMacros(const s: string): boolean;
begin
Result:=GlobalMacroList.StrHasMacros(s);
end;
function TLazIDEMacros.SubstituteMacros(var s: string): boolean;
begin
Result:=GlobalMacroList.SubstituteStr(s);
end;
procedure InternalInit;
var
c: char;

View File

@ -180,9 +180,6 @@ type
TryWithoutNumber: boolean): string; virtual; abstract;
function GetTestBuildDirectory: string; virtual; abstract;
// macros
function SubstituteMacros(var s: string): boolean; virtual; abstract;
// codetools
function BeginCodeTools: boolean; virtual; abstract;
procedure DoJumpToCodeToolBossError; virtual; abstract;

View File

@ -58,7 +58,7 @@ uses
ComponentReg, UComponentManMain, PackageEditor, AddToPackageDlg, PackageDefs,
PackageLinks, PackageSystem, OpenInstalledPkgDlg, PkgGraphExplorer,
BrokenDependenciesDlg, CompilerOptions, ExtToolEditDlg,
MsgView, BuildLazDialog, NewDialog,
TransferMacros, MsgView, BuildLazDialog, NewDialog,
ProjectInspector, ComponentPalette, UnitEditor, AddFileToAPackageDlg,
LazarusPackageIntf, PublishProjectDlg, InstallPkgSetDlg,
// bosses
@ -3019,7 +3019,7 @@ begin
// compile package
Result:=EnvironmentOptions.ExternalTools.Run(PkgCompileTool,
MainIDE.MacroList,nil,APackage.CompilerOptions);
GlobalMacroList,nil,APackage.CompilerOptions);
if Result<>mrOk then exit;
// compilation succeded -> write state file
Result:=DoSavePackageCompiledState(APackage,