Стационарные макросы
Загрузка макроса происходит при вызове глобальной функции Macro, которой передаётся один аргумент – таблица с параметрами макроса. При успешной загрузке функция возвращает true.
Macro { area = "Shell Info Tree"; -- string key = "CtrlF11 ShiftHome"; -- string (опциональное поле) description = "Macro example"; -- string (опциональное поле) flags = "NoPluginPanels EmptyCommandLine"; -- string (опциональное поле) filemask = "*.txt,*.cpp"; -- string (опциональное поле) priority = 50; -- number (опциональное поле) sortpriority = 50; -- number (опциональное поле) selected = true; -- boolean (опциональное поле) condition = function(key) return Far.Height>30 end; -- function (опциональное поле) action = function() msgbox("","Macro example") end; -- function id = "F0109446-AA63-4873-AEC3-17AEE993AA53"; -- string (опциональное поле) }
Поле
areaдолжно содержать имена одной или нескольких областей, разделённых пробелами.Поле
keyможет содержать имена одного или нескольких ключей, разделённых пробелами.
Ключи могут содержать модификаторы:Ctrl,LCtrl,RCtrl,Alt,RAlt,LAlt,Shift.
Ctrlозначает “любой изLCtrl,RCtrl”, аналогично дляAlt. Порядок указания модификаторов – произвольный.
Альтернативно, полеkeyможет быть задано как регулярное выражение, обрамлённое слешами (/).- В этом случае
/Ctrl/не сработает при нажатииRCtrl, надо явно обозначать/[LR]Ctrl/и т.п. - Также в этом случае необходимо соблюдать порядок в последовательности
Ctrl,Alt,Shift, например/[LR]Alt[LR]CtrlF1/никогда не сработает.
- В этом случае
Опциональное поле
flagsможет содержать набор флагов, разделённых пробелами. Изменения в названиях или интерпретации флагов описаны здесь.Опциональное поле
priority(приоритет) – число от 0 до 100. Значение по умолчанию = 50.
Макросы, добавляемые посредствомMCTL_ADDMACRO, имеют приоритет = 50.Опциональное поле
sortpriority(приоритет для сортировки) – число от 0 до 100. Значение по умолчанию = 50.
Значение данного поля учитывается при определении порядка расположения макросов в меню выбора макроса.Опциональное поле
selected– булевая величина.
Это поле указывает, что данный макрос должен быть изначально выбран в меню выбора макроса.Опциональное поле
filemask– строка.
Применимо только для областейEditorиViewer. Обрабатывается по правилам, аналогичным тем, которые Фар применяет для масок файлов при поиске из панелей и т.д. Если имя файла, открытого в редакторе или просмотрщике, не соответствует заданной маске, макрос выполняться не будет.Опциональное поле
condition– функция.- Вызывается с одним аргументом: имя нажатого ключа. Для автостартующих макросов – вызывается без аргументов.
- Если возвращает
false/nil/ничего, то макрос не исполняется. - Если возвращает число, то это число используется вместо
priority. - При других значениях возврата (например,
true) используетсяpriority.
Поле
action– функция.
Если макрос успешно прошёл все предварительные проверки (область действия, флаги, маска файла, приоритет), то вызывается функцияaction.Допустимо более одного макроса на сочетание (
key,area). В этом случае выполняется макрос с наибольшим приоритетом. Если есть более одного макроса с одинаковым наибольшим приоритетом – выводится меню выбора макроса.
Автостартующие макросы выполняются все, независимо от приоритета. Очерёдность их исполнения не определена.