VictorVG4
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Стационарные макросы -------------------------------------------------------------------------------- Загрузка макроса происходит при вызове глобальной функции 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 (опциональное поле) 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. Значение данного поля учитывается при определении порядка расположения макросов в меню выбора макроса. Опциональное поле filemask – строка. Применимо только для областей Editor и Viewer. Обрабатывается по правилам, аналогичным тем, которые Фар применяет для масок файлов при поиске из панелей и т.д. Если имя файла, открытого в редакторе или просмотрщике, не соответствует заданной маске, макрос выполняться не будет. Опциональное поле condition – функция. Вызывается с одним аргументом: имя нажатого ключа. Для автостартующих макросов – вызывается без аргументов. Если возвращает false/nil/ничего, то макрос не исполняется. Если возвращает число, то это число используется вместо priority. При других значениях возврата (например, true) используется priority. Поле action – функция. Если макрос успешно прошёл все предварительные проверки (область действия, флаги, маска файла, приоритет), то вызывается функция action. Допустимо более одного макроса на сочетание (key,area). В этом случае выполняется макрос с наибольшим приоритетом. Если есть более одного макроса с одинаковым наибольшим приоритетом – выводится меню выбора макроса. Автостартующие макросы выполняются все, независимо от приоритета. Очерёдность их исполнения не определена. |