IDE: Support running external tool with parsers, needed when used through IDE interface. Reported by Anton.

git-svn-id: trunk@59248 -
This commit is contained in:
juha 2018-10-04 21:23:05 +00:00
parent a9e858cf2a
commit 7c1bbdaa10
3 changed files with 16 additions and 28 deletions

View File

@ -135,12 +135,13 @@ type
function GetRunningTools(Index: integer): TExternalTool;
procedure AddRunningTool(Tool: TExternalTool); // (worker thread)
procedure RemoveRunningTool(Tool: TExternalTool); // (worker thread)
function RunExtToolHandler(ToolOptions: TIDEExternalToolOptions): boolean;
function RunToolAndDetach(ToolOptions: TIDEExternalToolOptions): boolean;
function RunToolWithParsers(ToolOptions: TIDEExternalToolOptions): boolean;
protected
FToolClass: TExternalToolClass;
function GetParsers(Index: integer): TExtToolParserClass; override;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
function RunToolAndDetach(ToolOptions: TIDEExternalToolOptions): boolean;
function RunToolWithParsers(ToolOptions: TIDEExternalToolOptions): boolean;
public
constructor Create(aOwner: TComponent); override;
destructor Destroy; override;
@ -890,6 +891,18 @@ end;
{ TExternalTools }
function TExternalTools.RunExtToolHandler(ToolOptions: TIDEExternalToolOptions): boolean;
begin
{$IFDEF VerboseExtToolThread}
debugln(['TExternalTools.RunExtToolHandler ',ToolOptions.Title,
' exe="',ToolOptions.Executable,'" params="',ToolOptions.CmdLineParams,'"']);
{$ENDIF}
if ToolOptions.Parsers.Count=0 then
Result := RunToolAndDetach(ToolOptions)
else
Result := RunToolWithParsers(ToolOptions)
end;
function TExternalTools.RunToolAndDetach(ToolOptions: TIDEExternalToolOptions): boolean;
// simply run and detach
var
@ -1122,6 +1135,7 @@ begin
ExternalToolList:=Self;
if ExternalTools=nil then
ExternalTools:=Self;
RunExternalTool := @RunExtToolHandler;
end;
destructor TExternalTools.Destroy;

View File

@ -60,9 +60,6 @@ type
{ TExternalToolsConsole }
TExternalToolsConsole = class(TExternalTools)
private
function RunExtToolHandler(ToolOptions: TIDEExternalToolOptions): boolean;
protected
public
constructor Create(aOwner: TComponent); override;
destructor Destroy; override;
@ -219,7 +216,6 @@ constructor TExternalToolsConsole.Create(aOwner: TComponent);
begin
inherited Create(aOwner);
FToolClass := TExternalToolConsole;
RunExternalTool := @RunExtToolHandler;
end;
destructor TExternalToolsConsole.Destroy;
@ -227,15 +223,6 @@ begin
inherited Destroy;
end;
function TExternalToolsConsole.RunExtToolHandler(ToolOptions: TIDEExternalToolOptions): boolean;
begin
{$IFDEF VerboseExtToolThread}
debugln(['TExternalToolsConsole.RunExtToolHandler ',ToolOptions.Title,' exe="',ToolOptions.Executable,'" params="',ToolOptions.CmdLineParams,'"']);
{$ENDIF}
Assert(ToolOptions.Parsers.Count=0, 'TExternalToolsConsole.RunExtToolHandler: Parsers.Count>0.');
Result := RunToolWithParsers(ToolOptions);
end;
function TExternalToolsConsole.GetIDEObject(ToolData: TIDEExternalToolData): TObject;
begin
raise Exception.Create('TExternalToolsConsole.GetIDEObject: Should not happen!');

View File

@ -32,9 +32,6 @@ type
{ TExternalToolsIDE }
TExternalToolsIDE = class(TExternalTools)
private
function RunExtToolHandler(ToolOptions: TIDEExternalToolOptions): boolean;
protected
public
constructor Create(aOwner: TComponent); override;
destructor Destroy; override;
@ -87,7 +84,6 @@ constructor TExternalToolsIDE.Create(aOwner: TComponent);
begin
inherited Create(aOwner);
FToolClass := TExternalToolIDE;
RunExternalTool := @RunExtToolHandler;
end;
destructor TExternalToolsIDE.Destroy;
@ -113,14 +109,5 @@ begin
Application.ProcessMessages;
end;
function TExternalToolsIDE.RunExtToolHandler(ToolOptions: TIDEExternalToolOptions): boolean;
begin
{$IFDEF VerboseExtToolThread}
debugln(['TExternalToolsIDE.RunExtToolHandler ',ToolOptions.Title,' exe="',ToolOptions.Executable,'" params="',ToolOptions.CmdLineParams,'"']);
{$ENDIF}
//if ToolOptions.Parsers.Count=0 then
Result := RunToolAndDetach(ToolOptions)
end;
end.