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

View File

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

View File

@ -38,7 +38,7 @@ unit IDEDefs;
interface interface
uses uses
Classes, SysUtils, Menus; Classes, SysUtils, Menus, MacroIntf;
type type
TIDEFileStateFlag = ( TIDEFileStateFlag = (

View File

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

View File

@ -880,9 +880,6 @@ type
procedure SaveEnvironment; override; procedure SaveEnvironment; override;
procedure LoadDesktopSettings(TheEnvironmentOptions: TEnvironmentOptions); procedure LoadDesktopSettings(TheEnvironmentOptions: TEnvironmentOptions);
procedure SaveDesktopSettings(TheEnvironmentOptions: TEnvironmentOptions); procedure SaveDesktopSettings(TheEnvironmentOptions: TEnvironmentOptions);
// macros
function SubstituteMacros(var s: string): boolean; override;
end; end;
@ -1190,7 +1187,7 @@ begin
FreeThenNil(TheCompiler); FreeThenNil(TheCompiler);
FreeThenNil(HiddenWindowsOnRun); FreeThenNil(HiddenWindowsOnRun);
FreeThenNil(TheOutputFilter); FreeThenNil(TheOutputFilter);
FreeThenNil(MacroList); FreeThenNil(GlobalMacroList);
FreeThenNil(IDEMacros); FreeThenNil(IDEMacros);
FreeThenNil(IDECodeMacros); FreeThenNil(IDECodeMacros);
FreeThenNil(LazProjectFileDescriptors); FreeThenNil(LazProjectFileDescriptors);
@ -1589,70 +1586,74 @@ end;
procedure TMainIDE.SetupTransferMacros; procedure TMainIDE.SetupTransferMacros;
begin begin
MacroList:=TTransferMacroList.Create; GlobalMacroList:=TTransferMacroList.Create;
IDEMacros:=TLazIDEMacros.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; 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 // projects macro functions
CodeToolBoss.DefineTree.MacroFunctions.AddExtended( CodeToolBoss.DefineTree.MacroFunctions.AddExtended(
@ -2308,7 +2309,7 @@ end;
procedure TMainIDE.mnuCleanDirectoryClicked(Sender: TObject); procedure TMainIDE.mnuCleanDirectoryClicked(Sender: TObject);
begin begin
ShowCleanDirectoryDialog(Project1.ProjectDirectory,MacroList); ShowCleanDirectoryDialog(Project1.ProjectDirectory,GlobalMacroList);
end; end;
Procedure TMainIDE.OnSrcNotebookFileNew(Sender: TObject); Procedure TMainIDE.OnSrcNotebookFileNew(Sender: TObject);
@ -3311,7 +3312,7 @@ end;
procedure TMainIDE.mnuToolConfigureClicked(Sender: TObject); procedure TMainIDE.mnuToolConfigureClicked(Sender: TObject);
begin begin
if ShowExtToolDialog(EnvironmentOptions.ExternalTools,MacroList)=mrOk then if ShowExtToolDialog(EnvironmentOptions.ExternalTools,GlobalMacroList)=mrOk then
begin begin
// save to enviroment options // save to enviroment options
SaveDesktopSettings(EnvironmentOptions); SaveDesktopSettings(EnvironmentOptions);
@ -3542,11 +3543,6 @@ begin
end; end;
end; end;
function TMainIDE.SubstituteMacros(var s: string): boolean;
begin
Result:=MacroList.SubstituteStr(s);
end;
procedure TMainIDE.LoadDesktopSettings( procedure TMainIDE.LoadDesktopSettings(
TheEnvironmentOptions: TEnvironmentOptions); TheEnvironmentOptions: TEnvironmentOptions);
begin begin
@ -3717,7 +3713,7 @@ end;
procedure TMainIDE.mnuEnvCodeToolsDefinesEditorClicked(Sender: TObject); procedure TMainIDE.mnuEnvCodeToolsDefinesEditorClicked(Sender: TObject);
begin begin
ShowCodeToolsDefinesEditor(CodeToolBoss,CodeToolsOpts,MacroList); ShowCodeToolsDefinesEditor(CodeToolBoss,CodeToolsOpts,GlobalMacroList);
end; end;
procedure TMainIDE.mnuEnvRescanFPCSrcDirClicked(Sender: TObject); procedure TMainIDE.mnuEnvRescanFPCSrcDirClicked(Sender: TObject);
@ -5583,7 +5579,7 @@ begin
// convert macros in filename // convert macros in filename
if nfConvertMacros in NewFlags then begin if nfConvertMacros in NewFlags then begin
if not MacroList.SubstituteStr(NewFilename) then begin if not GlobalMacroList.SubstituteStr(NewFilename) then begin
Result:=mrCancel; Result:=mrCancel;
exit; exit;
end; end;
@ -6004,7 +6000,7 @@ begin
// replace macros // replace macros
if ofConvertMacros in Flags then begin if ofConvertMacros in Flags then begin
if not MacroList.SubstituteStr(AFilename) then exit; if not GlobalMacroList.SubstituteStr(AFilename) then exit;
AFilename:=ExpandFilename(AFilename); AFilename:=ExpandFilename(AFilename);
end; end;
@ -7562,7 +7558,7 @@ begin
CheckCompilerOptsDlg:=TCheckCompilerOptsDlg.Create(nil); CheckCompilerOptsDlg:=TCheckCompilerOptsDlg.Create(nil);
try try
CheckCompilerOptsDlg.Options:=TheCompilerOptions; CheckCompilerOptsDlg.Options:=TheCompilerOptions;
CheckCompilerOptsDlg.MacroList:=MacroList; CheckCompilerOptsDlg.MacroList:=GlobalMacroList;
Result:=CheckCompilerOptsDlg.ShowModal; Result:=CheckCompilerOptsDlg.ShowModal;
finally finally
FreeThenNil(CheckCompilerOptsDlg); FreeThenNil(CheckCompilerOptsDlg);
@ -7773,7 +7769,7 @@ begin
WorkingDir:=Project1.RunParameterOptions.WorkingDirectory; WorkingDir:=Project1.RunParameterOptions.WorkingDirectory;
if WorkingDir='' then if WorkingDir='' then
WorkingDir:=ExtractFilePath(GetProjectTargetFilename); WorkingDir:=ExtractFilePath(GetProjectTargetFilename);
if not MacroList.SubstituteStr(WorkingDir) then begin if not GlobalMacroList.SubstituteStr(WorkingDir) then begin
Result:=mrCancel; Result:=mrCancel;
exit; exit;
end; end;
@ -7919,7 +7915,7 @@ end;
function TMainIDE.DoRunExternalTool(Index: integer): TModalResult; function TMainIDE.DoRunExternalTool(Index: integer): TModalResult;
begin begin
SourceNotebook.ClearErrorLines; SourceNotebook.ClearErrorLines;
Result:=EnvironmentOptions.ExternalTools.Run(Index,MacroList); Result:=EnvironmentOptions.ExternalTools.Run(Index,GlobalMacroList);
DoCheckFilesOnDisk; DoCheckFilesOnDisk;
end; end;
@ -7952,7 +7948,7 @@ begin
// save extra options // save extra options
IDEBuildFlags:=Flags+[blfOnlyIDE]; IDEBuildFlags:=Flags+[blfOnlyIDE];
Result:=SaveIDEMakeOptions(MiscellaneousOptions.BuildLazOpts, Result:=SaveIDEMakeOptions(MiscellaneousOptions.BuildLazOpts,
MacroList,PkgOptions,IDEBuildFlags); GlobalMacroList,PkgOptions,IDEBuildFlags);
if Result<>mrOk then exit; if Result<>mrOk then exit;
end; end;
@ -7979,7 +7975,7 @@ begin
// first compile all lazarus components (LCL, SynEdit, CodeTools, ...) // first compile all lazarus components (LCL, SynEdit, CodeTools, ...)
SourceNotebook.ClearErrorLines; SourceNotebook.ClearErrorLines;
Result:=BuildLazarus(MiscellaneousOptions.BuildLazOpts, Result:=BuildLazarus(MiscellaneousOptions.BuildLazOpts,
EnvironmentOptions.ExternalTools,MacroList, EnvironmentOptions.ExternalTools,GlobalMacroList,
'',EnvironmentOptions.CompilerFilename, '',EnvironmentOptions.CompilerFilename,
EnvironmentOptions.MakeFilename, EnvironmentOptions.MakeFilename,
Flags+[blfWithoutLinkingIDE]); Flags+[blfWithoutLinkingIDE]);
@ -8033,7 +8029,7 @@ begin
// save extra options // save extra options
IDEBuildFlags:=Flags+[blfOnlyIDE]; IDEBuildFlags:=Flags+[blfOnlyIDE];
Result:=SaveIDEMakeOptions(MiscellaneousOptions.BuildLazOpts, Result:=SaveIDEMakeOptions(MiscellaneousOptions.BuildLazOpts,
MacroList,PkgOptions,IDEBuildFlags); GlobalMacroList,PkgOptions,IDEBuildFlags);
if Result<>mrOk then begin if Result<>mrOk then begin
DebugLn('TMainIDE.DoBuildLazarus: Save IDEMake options failed.'); DebugLn('TMainIDE.DoBuildLazarus: Save IDEMake options failed.');
exit; exit;
@ -8042,7 +8038,7 @@ begin
// make ide // make ide
SourceNotebook.ClearErrorLines; SourceNotebook.ClearErrorLines;
Result:=BuildLazarus(MiscellaneousOptions.BuildLazOpts, Result:=BuildLazarus(MiscellaneousOptions.BuildLazOpts,
EnvironmentOptions.ExternalTools,MacroList, EnvironmentOptions.ExternalTools,GlobalMacroList,
PkgOptions,EnvironmentOptions.CompilerFilename, PkgOptions,EnvironmentOptions.CompilerFilename,
EnvironmentOptions.MakeFilename, EnvironmentOptions.MakeFilename,
IDEBuildFlags+[blfUseMakeIDECfg,blfDontClean]); IDEBuildFlags+[blfUseMakeIDECfg,blfDontClean]);
@ -8090,7 +8086,7 @@ begin
ExtTool.CmdLineParams:=Params; ExtTool.CmdLineParams:=Params;
// run // run
Result:=EnvironmentOptions.ExternalTools.Run(ExtTool,MacroList); Result:=EnvironmentOptions.ExternalTools.Run(ExtTool,GlobalMacroList);
finally finally
// clean up // clean up
ExtTool.Free; ExtTool.Free;
@ -8127,14 +8123,14 @@ begin
''); '');
if BuildWorkingDir='' then if BuildWorkingDir='' then
BuildWorkingDir:=ExtractFilePath(ActiveUnitInfo.Filename); BuildWorkingDir:=ExtractFilePath(ActiveUnitInfo.Filename);
if not MacroList.SubstituteStr(BuildWorkingDir) then begin if not GlobalMacroList.SubstituteStr(BuildWorkingDir) then begin
Result:=mrCancel; Result:=mrCancel;
exit; exit;
end; end;
BuildCommand:=GetIDEStringDirective(DirectiveList, BuildCommand:=GetIDEStringDirective(DirectiveList,
IDEDirectiveNames[idedBuildCommand], IDEDirectiveNames[idedBuildCommand],
IDEDirDefaultBuildCommand); IDEDirDefaultBuildCommand);
if (not MacroList.SubstituteStr(BuildCommand)) if (not GlobalMacroList.SubstituteStr(BuildCommand))
or (BuildCommand='') then begin or (BuildCommand='') then begin
Result:=mrCancel; Result:=mrCancel;
exit; exit;
@ -8165,7 +8161,7 @@ begin
ExtTool.CmdLineParams:=Params; ExtTool.CmdLineParams:=Params;
// run // run
Result:=EnvironmentOptions.ExternalTools.Run(ExtTool,MacroList); Result:=EnvironmentOptions.ExternalTools.Run(ExtTool,GlobalMacroList);
finally finally
// clean up // clean up
ExtTool.Free; ExtTool.Free;
@ -8214,14 +8210,14 @@ begin
IDEDirectiveNames[idedRunWorkingDir],''); IDEDirectiveNames[idedRunWorkingDir],'');
if RunWorkingDir='' then if RunWorkingDir='' then
RunWorkingDir:=ExtractFilePath(ActiveUnitInfo.Filename); RunWorkingDir:=ExtractFilePath(ActiveUnitInfo.Filename);
if not MacroList.SubstituteStr(RunWorkingDir) then begin if not GlobalMacroList.SubstituteStr(RunWorkingDir) then begin
Result:=mrCancel; Result:=mrCancel;
exit; exit;
end; end;
RunCommand:=GetIDEStringDirective(DirectiveList, RunCommand:=GetIDEStringDirective(DirectiveList,
IDEDirectiveNames[idedRunCommand], IDEDirectiveNames[idedRunCommand],
IDEDirDefaultRunCommand); IDEDirDefaultRunCommand);
if (not MacroList.SubstituteStr(RunCommand)) if (not GlobalMacroList.SubstituteStr(RunCommand))
or (RunCommand='') then begin or (RunCommand='') then begin
Result:=mrCancel; Result:=mrCancel;
exit; exit;
@ -8247,7 +8243,7 @@ begin
ExtTool.CmdLineParams:=Params; ExtTool.CmdLineParams:=Params;
// run // run
Result:=EnvironmentOptions.ExternalTools.Run(ExtTool,MacroList); Result:=EnvironmentOptions.ExternalTools.Run(ExtTool,GlobalMacroList);
finally finally
// clean up // clean up
ExtTool.Free; ExtTool.Free;
@ -8282,7 +8278,7 @@ begin
BuildFileDialog.DirectiveList:=DirectiveList; BuildFileDialog.DirectiveList:=DirectiveList;
BuildFileDialog.BuildFileIfActive:=ActiveUnitInfo.BuildFileIfActive; BuildFileDialog.BuildFileIfActive:=ActiveUnitInfo.BuildFileIfActive;
BuildFileDialog.RunFileIfActive:=ActiveUnitInfo.RunFileIfActive; BuildFileDialog.RunFileIfActive:=ActiveUnitInfo.RunFileIfActive;
BuildFileDialog.MacroList:=MacroList; BuildFileDialog.MacroList:=GlobalMacroList;
BuildFileDialog.Filename:= BuildFileDialog.Filename:=
CreateRelativePath(ActiveUnitInfo.Filename,Project1.ProjectDirectory); CreateRelativePath(ActiveUnitInfo.Filename,Project1.ProjectDirectory);
if BuildFileDialog.ShowModal<>mrOk then begin if BuildFileDialog.ShowModal<>mrOk then begin
@ -8547,7 +8543,7 @@ end;
function TMainIDE.RunExternalTool(Tool: TIDEExternalToolOptions): TModalResult; function TMainIDE.RunExternalTool(Tool: TIDEExternalToolOptions): TModalResult;
begin begin
SourceNotebook.ClearErrorLines; SourceNotebook.ClearErrorLines;
Result:=EnvironmentOptions.ExternalTools.Run(Tool,MacroList); Result:=EnvironmentOptions.ExternalTools.Run(Tool,GlobalMacroList);
DoCheckFilesOnDisk; DoCheckFilesOnDisk;
end; end;
@ -9021,7 +9017,7 @@ begin
// check command after // check command after
CommandAfter:=Options.CommandAfter; CommandAfter:=Options.CommandAfter;
if not MacroList.SubstituteStr(CommandAfter) then begin if not GlobalMacroList.SubstituteStr(CommandAfter) then begin
Result:=mrCancel; Result:=mrCancel;
exit; exit;
end; end;
@ -9091,7 +9087,7 @@ begin
Tool.Title:=lisCommandAfterPublishingModule; Tool.Title:=lisCommandAfterPublishingModule;
Tool.WorkingDirectory:=DestDir; Tool.WorkingDirectory:=DestDir;
Tool.CmdLineParams:=CmdAfterParams; Tool.CmdLineParams:=CmdAfterParams;
Result:=EnvironmentOptions.ExternalTools.Run(Tool,MacroList); Result:=EnvironmentOptions.ExternalTools.Run(Tool,GlobalMacroList);
if Result<>mrOk then exit; if Result<>mrOk then exit;
end else begin end else begin
ShowErrorForCommandAfter; ShowErrorForCommandAfter;
@ -9398,9 +9394,9 @@ begin
CurrentParsedCompilerOption:=Options; CurrentParsedCompilerOption:=Options;
Result:=UnparsedValue; Result:=UnparsedValue;
if PlatformIndependent then if PlatformIndependent then
MacroList.SubstituteStr(Result,CompilerOptionMacroPlatformIndependent) GlobalMacroList.SubstituteStr(Result,CompilerOptionMacroPlatformIndependent)
else else
MacroList.SubstituteStr(Result,CompilerOptionMacroNormal); GlobalMacroList.SubstituteStr(Result,CompilerOptionMacroNormal);
end; end;
function TMainIDE.OnMacroPromptFunction(const s:string; function TMainIDE.OnMacroPromptFunction(const s:string;
@ -9484,7 +9480,7 @@ end;
procedure TMainIDE.OnCmdLineCreate(var CmdLine: string; var Abort:boolean); procedure TMainIDE.OnCmdLineCreate(var CmdLine: string; var Abort:boolean);
// replace all transfer macros in command line // replace all transfer macros in command line
begin begin
Abort:=not MacroList.SubstituteStr(CmdLine); Abort:=not GlobalMacroList.SubstituteStr(CmdLine);
end; end;
procedure TMainIDE.GetIDEFileState(Sender: TObject; const AFilename: string; procedure TMainIDE.GetIDEFileState(Sender: TObject; const AFilename: string;
@ -9859,7 +9855,7 @@ begin
if Result='' if Result=''
then begin then begin
Result:=Project1.RunParameterOptions.CmdLineParams; Result:=Project1.RunParameterOptions.CmdLineParams;
if MacroList.SubstituteStr(Result) then begin if GlobalMacroList.SubstituteStr(Result) then begin
TargetFileName:='"'+GetProjectTargetFilename+'"'; TargetFileName:='"'+GetProjectTargetFilename+'"';
if Result='' then if Result='' then
Result:=TargetFileName Result:=TargetFileName
@ -9868,14 +9864,14 @@ begin
end else end else
Result:=''; Result:='';
end else begin end else begin
if not MacroList.SubstituteStr(Result) then Result:=''; if not GlobalMacroList.SubstituteStr(Result) then Result:='';
end; end;
end; end;
function TMainIDE.GetProjPublishDir: string; function TMainIDE.GetProjPublishDir: string;
begin begin
Result:=Project1.PublishOptions.DestinationDirectory; Result:=Project1.PublishOptions.DestinationDirectory;
if MacroList.SubstituteStr(Result) then begin if GlobalMacroList.SubstituteStr(Result) then begin
if FilenameIsAbsolute(Result) then begin if FilenameIsAbsolute(Result) then begin
Result:=AppendPathDelim(TrimFilename(Result)); Result:=AppendPathDelim(TrimFilename(Result));
end else begin end else begin
@ -11173,7 +11169,7 @@ var
if (Options.ExtraFiles=nil) then begin if (Options.ExtraFiles=nil) then begin
for i:=0 to Options.ExtraFiles.Count-1 do begin for i:=0 to Options.ExtraFiles.Count-1 do begin
CurFileMask:=Options.ExtraFiles[i]; 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 if SysUtils.FindFirst(CurFileMask,faAnyFile,FileInfo)=0
then begin then begin
CurDirectory:=AppendPathDelim(ExtractFilePath(CurFileMask)); CurDirectory:=AppendPathDelim(ExtractFilePath(CurFileMask));

View File

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

View File

@ -108,6 +108,18 @@ type
write SetMarkUnhandledMacros; write SetMarkUnhandledMacros;
end; 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 implementation
var var
@ -488,6 +500,18 @@ begin
Result:=TrimFilename(Filename); Result:=TrimFilename(Filename);
end; 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; procedure InternalInit;
var var
c: char; c: char;

View File

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

View File

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