Skip to content

Commit 0162c3e

Browse files
committed
luamacro: implement custom events (POC)
define event handler: ```lua Event { description="test!"; group="CustomEvent"; action=function(Event,...) far.Show(Event,...) end; } ``` emit event: ```lua mf.ProcessEvent("CustomEvent",{},1,2,3) ```
1 parent 5c126be commit 0162c3e

2 files changed

Lines changed: 15 additions & 8 deletions

File tree

plugins/luamacro/api.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ end
9393

9494
mf.GetMacroCopy = utils.GetMacroCopy
9595
mf.EnumScripts = utils.EnumScripts
96+
mf.ProcessEvent = utils.ProcessEvent
9697
--------------------------------------------------------------------------------
9798

9899
Object = {

plugins/luamacro/utils.lua

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ local function AddId (trg, src)
183183
end
184184

185185
local function EV_Handler (macros, filename, ...)
186+
if not macros then return end
186187
-- Get current priorities.
187188
local indexes,priorities = {},{}
188189
for i,m in ipairs(macros) do
@@ -299,6 +300,10 @@ local function export_GetContentData (filename, colnames)
299300
return tOut
300301
end
301302

303+
local function ProcessEvent (group, options, ...) --todo
304+
return EV_Handler(Events[group:lower()], options and options.filename, options, ...)
305+
end
306+
302307
local ExpandKey do -- измеренное время исполнения на ключе "CtrlAltShiftF12" = ??? (Lua); 2.3uS (LuaJIT);
303308
local t={}
304309

@@ -485,7 +490,8 @@ end
485490
local AddEvent_fields = {"group","action","description","priority","condition","filemask"}
486491
local function AddEvent (srctable, FileName)
487492
local group = type(srctable)=="table" and type(srctable.group)=="string" and srctable.group:lower()
488-
if not (group and Events[group]) then return end
493+
if not group then return end
494+
Events[group] = Events[group] or {}
489495

490496
if type(srctable.action)~="function" then return end
491497

@@ -724,7 +730,6 @@ local function LoadMacros (unload, paths)
724730

725731
local AreaNames = allAreas and AllAreaNames or SomeAreaNames
726732
for _,name in pairs(AreaNames) do newAreas[name]={} end
727-
for _,name in ipairs(EventGroups) do Events[name]={} end
728733
for k in pairs(package.loaded) do
729734
if initial_modules[k]==nil and not package.nounload[k] then
730735
package.loaded[k]=nil
@@ -865,12 +870,12 @@ local function LoadMacros (unload, paths)
865870

866871
far.RecursiveSearch (DirMacros.."internal", "*.lua", LoadRecordedFile, 0)
867872

868-
export.ExitFAR = Events.exitfar[1] and export_ExitFAR
869-
export.ProcessDialogEvent = Events.dialogevent[1] and export_ProcessDialogEvent
870-
export.ProcessEditorInput = Events.editorinput[1] and export_ProcessEditorInput
871-
export.ProcessViewerEvent = Events.viewerevent[1] and export_ProcessViewerEvent
872-
export.ProcessConsoleInput = Events.consoleinput[1] and export_ProcessConsoleInput
873-
export.ProcessSynchroEvent = Events.folderchanged[1] and export_ProcessSynchroEvent
873+
export.ExitFAR = Events.exitfar and export_ExitFAR
874+
export.ProcessDialogEvent = Events.dialogevent and export_ProcessDialogEvent
875+
export.ProcessEditorInput = Events.editorinput and export_ProcessEditorInput
876+
export.ProcessViewerEvent = Events.viewerevent and export_ProcessViewerEvent
877+
export.ProcessConsoleInput = Events.consoleinput and export_ProcessConsoleInput
878+
export.ProcessSynchroEvent = Events.folderchanged and export_ProcessSynchroEvent
874879
if ContentColumns[1] then
875880
export.GetContentFields = export_GetContentFields
876881
export.GetContentData = export_GetContentData
@@ -1309,6 +1314,7 @@ return {
13091314
InitMacroSystem = InitMacroSystem,
13101315
LoadingInProgress = function() return LoadingInProgress end,
13111316
LoadMacros = LoadMacros,
1317+
ProcessEvent = ProcessEvent,
13121318
ProcessRecordedMacro = ProcessRecordedMacro,
13131319
RunStartMacro = RunStartMacro,
13141320
UnloadMacros = InitMacroSystem,

0 commit comments

Comments
 (0)