Обработчики событий
Как и стационарные макросы, обработчики событий загружаются из Lua-файлов (расширение *.lua
), находящихся в папке %FARPROFILE%\Macros\scripts
и её подпапках. Каждый Lua-файл может содержать вместе и макросы, и обработчики событий.
Загрузка обработчика происходит при вызове глобальной функции Event
, которой передаётся один аргумент – таблица с параметрами обработчика. При успешной загрузке функция возвращает true
.
Event { group = "EditorEvent"; -- string description = "Event example"; -- string (опциональное поле) filemask = "*.txt,*.cpp"; -- string (опциональное поле) priority = 50; -- number (опциональное поле) condition = function() ...... end; -- function (опциональное поле) action = function() ...... end; -- function id = "F0109446-AA63-4873-AEC3-17AEE993AA53"; -- string (опциональное поле) }
Поле group
может иметь одно из следующих значений:
"DialogEvent", "EditorEvent", "EditorInput", "ExitFAR", "ViewerEvent", "ConsoleInput"
.
Данные имена являются производными от имён соответствующих функций, экспортируемых плагином, например:
export.ProcessDialogEvent -> DialogEvent
Функции condition
и action
обработчика вызываются с теми же параметрами, с которыми вызывается соответствующая экспортируемая функция (см. мануал LuaFAR).
При наличии нескольких обработчиков одного и того же события (т.е. обработчиков с одинаковым полем group
), эти обработчики будут вызваны по очереди: обработчик с более высоким приоритетом вызывается раньше. Приоритет определяется динамически с учётом функции condition
, если таковая имеется, как и для макросов.
Событие "ExitFAR"
вызывается в следующих случаях: (a) выход из Far Manager,
(b) выгрузка плагина LuaMacro, (c) выгрузка либо перезагрузка макросов. Обработчик события получает один аргумент булевого типа: false
для случаев (a) и (b); true
для случая (c).