Стационарные макросы
Загрузка макроса происходит при вызове глобальной функции 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
). В этом случае выполняется макрос с наибольшим приоритетом. Если есть более одного макроса с одинаковым наибольшим приоритетом – выводится меню выбора макроса.
Автостартующие макросы выполняются все, независимо от приоритета. Очерёдность их исполнения не определена.