mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-11 09:38:52 +02:00
IDE: Turn ExternalTools from a global var into a global function, returning ExternalToolList. Avoid duplicate assignments to ExternalToolList.
git-svn-id: trunk@63079 -
This commit is contained in:
parent
d4f25d678f
commit
c43d57c21a
@ -1611,6 +1611,8 @@ constructor TExternalToolsBase.Create(aOwner: TComponent);
|
|||||||
begin
|
begin
|
||||||
inherited Create(aOwner);
|
inherited Create(aOwner);
|
||||||
fItems:=TFPList.Create;
|
fItems:=TFPList.Create;
|
||||||
|
if ExternalToolList=nil then
|
||||||
|
ExternalToolList:=Self;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TExternalToolsBase.Destroy;
|
destructor TExternalToolsBase.Destroy;
|
||||||
|
@ -357,7 +357,7 @@ end;
|
|||||||
|
|
||||||
destructor TBuildManager.Destroy;
|
destructor TBuildManager.Destroy;
|
||||||
begin
|
begin
|
||||||
ExternalTools.Free; // sets ExternalTools to nil, do not use FreeAndNil!
|
ExternalToolList.Free; // sets ExternalToolList to nil, do not use FreeAndNil!
|
||||||
|
|
||||||
GetBuildMacroValues:=nil;
|
GetBuildMacroValues:=nil;
|
||||||
OnAppendCustomOption:=nil;
|
OnAppendCustomOption:=nil;
|
||||||
@ -535,8 +535,8 @@ var
|
|||||||
begin
|
begin
|
||||||
// setup the external tool queue
|
// setup the external tool queue
|
||||||
Tools:=aToolsClass.Create(Self);
|
Tools:=aToolsClass.Create(Self);
|
||||||
if Tools<>ExternalTools then
|
if Tools<>ExternalToolList then
|
||||||
raise Exception.Create('TBuildManager.SetupExternalTools ExternalTools='+DbgSName(ExternalTools));
|
raise Exception.Create('TBuildManager.SetupExternalTools ExternalTools='+DbgSName(ExternalToolList));
|
||||||
EnvOptsChanged;
|
EnvOptsChanged;
|
||||||
RegisterFPCParser;
|
RegisterFPCParser;
|
||||||
RegisterPas2jsParser;
|
RegisterPas2jsParser;
|
||||||
@ -561,9 +561,9 @@ end;
|
|||||||
procedure TBuildManager.EnvOptsChanged;
|
procedure TBuildManager.EnvOptsChanged;
|
||||||
begin
|
begin
|
||||||
if EnvironmentOptions.MaxExtToolsInParallel<=0 then
|
if EnvironmentOptions.MaxExtToolsInParallel<=0 then
|
||||||
ExternalTools.MaxProcessCount:=DefaultMaxProcessCount
|
ExternalToolsRef.MaxProcessCount:=DefaultMaxProcessCount
|
||||||
else
|
else
|
||||||
ExternalTools.MaxProcessCount:=EnvironmentOptions.MaxExtToolsInParallel;
|
ExternalToolsRef.MaxProcessCount:=EnvironmentOptions.MaxExtToolsInParallel;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TBuildManager.GetBuildMacroOverride(const MacroName: string): string;
|
function TBuildManager.GetBuildMacroOverride(const MacroName: string): string;
|
||||||
|
@ -2752,7 +2752,7 @@ procedure TMessagesFrame.MsgCtrlPopupMenuPopup(Sender: TObject);
|
|||||||
if View.Tool=nil then continue;
|
if View.Tool=nil then continue;
|
||||||
ToolData:=TIDEExternalToolData(View.Tool.Data);
|
ToolData:=TIDEExternalToolData(View.Tool.Data);
|
||||||
if not (ToolData is TIDEExternalToolData) then continue;
|
if not (ToolData is TIDEExternalToolData) then continue;
|
||||||
IDETool:=ExternalTools.GetIDEObject(ToolData);
|
IDETool:=ExternalToolList.GetIDEObject(ToolData);
|
||||||
if IDETool=nil then continue;
|
if IDETool=nil then continue;
|
||||||
if IDETool is TLazProject then begin
|
if IDETool is TLazProject then begin
|
||||||
CompOpts:=TLazProject(IDETool).LazCompilerOptions as TBaseCompilerOptions;
|
CompOpts:=TLazProject(IDETool).LazCompilerOptions as TBaseCompilerOptions;
|
||||||
@ -3046,7 +3046,7 @@ begin
|
|||||||
Item:=TIDEMenuCommand(Sender);
|
Item:=TIDEMenuCommand(Sender);
|
||||||
MsgId:=Item.Tag;
|
MsgId:=Item.Tag;
|
||||||
ToolData:=TIDEExternalToolData(Item.UserTag);
|
ToolData:=TIDEExternalToolData(Item.UserTag);
|
||||||
IDETool:=ExternalTools.GetIDEObject(ToolData);
|
IDETool:=ExternalToolList.GetIDEObject(ToolData);
|
||||||
if IDETool=nil then exit;
|
if IDETool=nil then exit;
|
||||||
if IDETool is TLazProject then begin
|
if IDETool is TLazProject then begin
|
||||||
CompOpts:=TLazProject(IDETool).LazCompilerOptions;
|
CompOpts:=TLazProject(IDETool).LazCompilerOptions;
|
||||||
|
@ -163,18 +163,22 @@ type
|
|||||||
procedure RegisterParser(Parser: TExtToolParserClass); override;
|
procedure RegisterParser(Parser: TExtToolParserClass); override;
|
||||||
procedure UnregisterParser(Parser: TExtToolParserClass); override;
|
procedure UnregisterParser(Parser: TExtToolParserClass); override;
|
||||||
function FindParserForTool(const SubTool: string): TExtToolParserClass; override;
|
function FindParserForTool(const SubTool: string): TExtToolParserClass; override;
|
||||||
function FindParserWithName(const ParserName: string): TExtToolParserClass;
|
function FindParserWithName(const ParserName: string): TExtToolParserClass; override;
|
||||||
override;
|
|
||||||
function GetMsgTool(Msg: TMessageLine): TAbstractExternalTool; override;
|
function GetMsgTool(Msg: TMessageLine): TAbstractExternalTool; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TExternalToolsClass = class of TExternalTools;
|
TExternalToolsClass = class of TExternalTools;
|
||||||
|
|
||||||
var
|
function ExternalToolsRef: TExternalTools;
|
||||||
ExternalTools: TExternalTools = nil;
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
function ExternalToolsRef: TExternalTools;
|
||||||
|
begin
|
||||||
|
Result := ExternalToolList as TExternalTools;
|
||||||
|
end;
|
||||||
|
|
||||||
{$IF defined(VerboseExtToolErrors) or defined(VerboseExtToolThread) or defined(VerboseExtToolAddOutputLines)}
|
{$IF defined(VerboseExtToolErrors) or defined(VerboseExtToolThread) or defined(VerboseExtToolAddOutputLines)}
|
||||||
function ArgsToString(Args: array of const): string;
|
function ArgsToString(Args: array of const): string;
|
||||||
var
|
var
|
||||||
@ -1205,10 +1209,6 @@ begin
|
|||||||
fRunning:=TFPList.Create;
|
fRunning:=TFPList.Create;
|
||||||
fParsers:=TFPList.Create;
|
fParsers:=TFPList.Create;
|
||||||
MaxProcessCount:=DefaultMaxProcessCount;
|
MaxProcessCount:=DefaultMaxProcessCount;
|
||||||
if ExternalToolList=nil then
|
|
||||||
ExternalToolList:=Self;
|
|
||||||
if ExternalTools=nil then
|
|
||||||
ExternalTools:=Self;
|
|
||||||
RunExternalTool := @RunExtToolHandler;
|
RunExternalTool := @RunExtToolHandler;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1220,10 +1220,6 @@ begin
|
|||||||
try
|
try
|
||||||
if fRunning.Count>0 then
|
if fRunning.Count>0 then
|
||||||
raise Exception.Create('TExternalTools.Destroy some tools still running');
|
raise Exception.Create('TExternalTools.Destroy some tools still running');
|
||||||
if ExternalToolList=Self then
|
|
||||||
ExternalToolList:=nil;
|
|
||||||
if ExternalTools=Self then
|
|
||||||
ExternalTools:=nil;
|
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
FreeAndNil(fRunning);
|
FreeAndNil(fRunning);
|
||||||
FreeAndNil(fParsers);
|
FreeAndNil(fParsers);
|
||||||
|
16
ide/main.pp
16
ide/main.pp
@ -1666,8 +1666,8 @@ begin
|
|||||||
|
|
||||||
IDECommandList.RemoveCustomUpdateEvent(@UpdateMainIDECommands);
|
IDECommandList.RemoveCustomUpdateEvent(@UpdateMainIDECommands);
|
||||||
|
|
||||||
if Assigned(ExternalTools) then
|
if Assigned(ExternalToolList) then
|
||||||
ExternalTools.TerminateAll;
|
ExternalToolList.TerminateAll;
|
||||||
|
|
||||||
if ConsoleVerbosity>0 then
|
if ConsoleVerbosity>0 then
|
||||||
DebugLn('Hint: (lazarus) [TMainIDE.Destroy]');
|
DebugLn('Hint: (lazarus) [TMainIDE.Destroy]');
|
||||||
@ -4945,7 +4945,7 @@ begin
|
|||||||
if (Index<0)
|
if (Index<0)
|
||||||
or (Index>=ExternalUserTools.Count)
|
or (Index>=ExternalUserTools.Count)
|
||||||
then exit;
|
then exit;
|
||||||
if ExternalTools.RunningCount=0 then
|
if ExternalToolsRef.RunningCount=0 then
|
||||||
IDEMessagesWindow.Clear;
|
IDEMessagesWindow.Clear;
|
||||||
DoRunExternalTool(Index,false);
|
DoRunExternalTool(Index,false);
|
||||||
end;
|
end;
|
||||||
@ -7169,7 +7169,7 @@ end;
|
|||||||
function TMainIDE.DoAbortBuild(Interactive: boolean): TModalResult;
|
function TMainIDE.DoAbortBuild(Interactive: boolean): TModalResult;
|
||||||
begin
|
begin
|
||||||
Result:=mrOk;
|
Result:=mrOk;
|
||||||
if ExternalTools.RunningCount=0 then exit;
|
if ExternalToolsRef.RunningCount=0 then exit;
|
||||||
// IDE code is currently running a build process
|
// IDE code is currently running a build process
|
||||||
// we cannot continue, while some IDE code is waiting for the processes
|
// we cannot continue, while some IDE code is waiting for the processes
|
||||||
// => exit this event (no matter if the processes are stopped or not)
|
// => exit this event (no matter if the processes are stopped or not)
|
||||||
@ -7766,7 +7766,7 @@ begin
|
|||||||
|
|
||||||
if fBuilder=Nil then
|
if fBuilder=Nil then
|
||||||
fBuilder:=TLazarusBuilder.Create;
|
fBuilder:=TLazarusBuilder.Create;
|
||||||
if ExternalTools.RunningCount=0 then
|
if ExternalToolsRef.RunningCount=0 then
|
||||||
IDEMessagesWindow.Clear;
|
IDEMessagesWindow.Clear;
|
||||||
fBuilder.ProfileChanged:=false;
|
fBuilder.ProfileChanged:=false;
|
||||||
OldToolStatus:=ToolStatus;
|
OldToolStatus:=ToolStatus;
|
||||||
@ -7952,7 +7952,7 @@ begin
|
|||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
if ExternalTools.RunningCount=0 then
|
if ExternalToolsRef.RunningCount=0 then
|
||||||
IDEMessagesWindow.Clear;
|
IDEMessagesWindow.Clear;
|
||||||
DirectiveList:=TStringList.Create;
|
DirectiveList:=TStringList.Create;
|
||||||
OldToolStatus:=ToolStatus;
|
OldToolStatus:=ToolStatus;
|
||||||
@ -8379,7 +8379,7 @@ begin
|
|||||||
if MainBuildBoss.CompilerOnDiskChanged then
|
if MainBuildBoss.CompilerOnDiskChanged then
|
||||||
MainBuildBoss.RescanCompilerDefines(false,false,false,false);
|
MainBuildBoss.RescanCompilerDefines(false,false,false,false);
|
||||||
|
|
||||||
if (IDEMessagesWindow<>nil) and (ExternalTools.RunningCount=0) then
|
if (IDEMessagesWindow<>nil) and (ExternalToolsRef.RunningCount=0) then
|
||||||
IDEMessagesWindow.Clear;
|
IDEMessagesWindow.Clear;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -8626,7 +8626,7 @@ end;
|
|||||||
|
|
||||||
procedure TMainIDE.AbortBuild;
|
procedure TMainIDE.AbortBuild;
|
||||||
begin
|
begin
|
||||||
ExternalTools.TerminateAll;
|
ExternalToolList.TerminateAll;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainIDE.UpdateCaption;
|
procedure TMainIDE.UpdateCaption;
|
||||||
|
Loading…
Reference in New Issue
Block a user