mirror of https://gitlab.com/basile.b/dexed.git
tools, added option to pipe current editor content to tool input stream
This commit is contained in:
parent
0062b58a74
commit
dfd6470537
|
@ -6,7 +6,8 @@ interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, FileUtil, process, menus, ce_processes,
|
Classes, SysUtils, FileUtil, process, menus, ce_processes,
|
||||||
ce_common, ce_writableComponent, ce_interfaces, ce_observer, ce_inspectors;
|
ce_common, ce_writableComponent, ce_interfaces, ce_observer, ce_inspectors,
|
||||||
|
ce_synmemo;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
|
@ -21,6 +22,7 @@ type
|
||||||
fToolAlias: string;
|
fToolAlias: string;
|
||||||
fQueryParams: boolean;
|
fQueryParams: boolean;
|
||||||
fClearMessages: boolean;
|
fClearMessages: boolean;
|
||||||
|
fEditorToInput: boolean;
|
||||||
fChainBefore: TStringList;
|
fChainBefore: TStringList;
|
||||||
fChainAfter: TStringList;
|
fChainAfter: TStringList;
|
||||||
fShortcut: TShortcut;
|
fShortcut: TShortcut;
|
||||||
|
@ -39,6 +41,7 @@ type
|
||||||
property showWindows: TShowWindowOptions read fShowWin write fShowWin;
|
property showWindows: TShowWindowOptions read fShowWin write fShowWin;
|
||||||
property queryParameters: boolean read fQueryParams write fQueryParams;
|
property queryParameters: boolean read fQueryParams write fQueryParams;
|
||||||
property clearMessages: boolean read fClearMessages write fClearMessages;
|
property clearMessages: boolean read fClearMessages write fClearMessages;
|
||||||
|
property editorToInput: boolean read fEditorToInput write fEditorToInput;
|
||||||
property chainBefore: TStringList read fChainBefore write setchainBefore;
|
property chainBefore: TStringList read fChainBefore write setchainBefore;
|
||||||
property chainAfter: TStringList read fChainAfter write setChainAfter;
|
property chainAfter: TStringList read fChainAfter write setChainAfter;
|
||||||
property shortcut: TShortcut read fShortcut write fShortcut;
|
property shortcut: TShortcut read fShortcut write fShortcut;
|
||||||
|
@ -48,10 +51,11 @@ type
|
||||||
procedure assign(Source: TPersistent); override;
|
procedure assign(Source: TPersistent); override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TCETools = class(TWritableLfmTextComponent, ICEMainMenuProvider, ICEEditableShortcut)
|
TCETools = class(TWritableLfmTextComponent, ICEMainMenuProvider, ICEEditableShortcut, ICEMultiDocObserver)
|
||||||
private
|
private
|
||||||
fTools: TCollection;
|
fTools: TCollection;
|
||||||
fShctCount: Integer;
|
fShctCount: Integer;
|
||||||
|
fDoc: TCESynMemo;
|
||||||
function getTool(index: Integer): TCEToolItem;
|
function getTool(index: Integer): TCEToolItem;
|
||||||
procedure setTools(const aValue: TCollection);
|
procedure setTools(const aValue: TCollection);
|
||||||
//
|
//
|
||||||
|
@ -59,6 +63,11 @@ type
|
||||||
procedure menuUpdate(item: TMenuItem);
|
procedure menuUpdate(item: TMenuItem);
|
||||||
procedure executeToolFromMenu(sender: TObject);
|
procedure executeToolFromMenu(sender: TObject);
|
||||||
//
|
//
|
||||||
|
procedure docNew(aDoc: TCESynMemo);
|
||||||
|
procedure docFocused(aDoc: TCESynMemo);
|
||||||
|
procedure docChanged(aDoc: TCESynMemo);
|
||||||
|
procedure docClosing(aDoc: TCESynMemo);
|
||||||
|
//
|
||||||
function scedWantFirst: boolean;
|
function scedWantFirst: boolean;
|
||||||
function scedWantNext(out category, identifier: string; out aShortcut: TShortcut): boolean;
|
function scedWantNext(out category, identifier: string; out aShortcut: TShortcut): boolean;
|
||||||
procedure scedSendItem(const category, identifier: string; aShortcut: TShortcut);
|
procedure scedSendItem(const category, identifier: string; aShortcut: TShortcut);
|
||||||
|
@ -305,6 +314,29 @@ begin
|
||||||
end;
|
end;
|
||||||
{$ENDREGION}
|
{$ENDREGION}
|
||||||
|
|
||||||
|
{$REGION ICEMultidocObserver ---------------------------------------------------}
|
||||||
|
procedure TCETools.docNew(aDoc: TCESynMemo);
|
||||||
|
begin
|
||||||
|
fDoc := aDoc;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCETools.docFocused(aDoc: TCESynMemo);
|
||||||
|
begin
|
||||||
|
fDoc := aDoc;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCETools.docChanged(aDoc: TCESynMemo);
|
||||||
|
begin
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCETools.docClosing(aDoc: TCESynMemo);
|
||||||
|
begin
|
||||||
|
if fDoc <> aDoc then exit;
|
||||||
|
fDoc := nil;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{$ENDREGION}
|
||||||
|
|
||||||
{$REGION Tools things ----------------------------------------------------------}
|
{$REGION Tools things ----------------------------------------------------------}
|
||||||
procedure TCETools.setTools(const aValue: TCollection);
|
procedure TCETools.setTools(const aValue: TCollection);
|
||||||
begin
|
begin
|
||||||
|
@ -324,6 +356,7 @@ end;
|
||||||
procedure TCETools.executeTool(aTool: TCEToolItem);
|
procedure TCETools.executeTool(aTool: TCEToolItem);
|
||||||
var
|
var
|
||||||
nme: string;
|
nme: string;
|
||||||
|
txt: string;
|
||||||
chained: TCollectionItem;
|
chained: TCollectionItem;
|
||||||
begin
|
begin
|
||||||
if aTool = nil then exit;
|
if aTool = nil then exit;
|
||||||
|
@ -336,7 +369,15 @@ begin
|
||||||
if TCEToolItem(chained).toolAlias <> aTool.toolAlias then
|
if TCEToolItem(chained).toolAlias <> aTool.toolAlias then
|
||||||
TCEToolItem(chained).execute;
|
TCEToolItem(chained).execute;
|
||||||
if exeInSysPath(aTool.executable) then
|
if exeInSysPath(aTool.executable) then
|
||||||
|
begin
|
||||||
aTool.execute;
|
aTool.execute;
|
||||||
|
if aTool.editorToInput and assigned(fDoc) and (poUsePipes in aTool.options) then
|
||||||
|
begin
|
||||||
|
txt := fDoc.Text;
|
||||||
|
aTool.fProcess.Input.Write(txt[1], length(txt));
|
||||||
|
aTool.fProcess.CloseInput;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
for nme in aTool.chainAfter do
|
for nme in aTool.chainAfter do
|
||||||
for chained in fTools do
|
for chained in fTools do
|
||||||
if TCEToolItem(chained).toolAlias = nme then
|
if TCEToolItem(chained).toolAlias = nme then
|
||||||
|
|
Loading…
Reference in New Issue