Стационарные макросы

Far Manager Macro System

Стационарные макросы


Загрузка макроса происходит при вызове глобальной функции 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 (опциональное поле)
  }
  1. Поле area должно содержать имена одной или нескольких областей, разделённых пробелами.

  2. Поле key может содержать имена одного или нескольких ключей, разделённых пробелами.
    Ключи могут содержать модификаторы: Ctrl,LCtrl,RCtrl,Alt,RAlt,LAlt,Shift.
    Ctrl означает “любой из LCtrl,RCtrl”, аналогично для Alt. Порядок указания модификаторов – произвольный.

    Альтернативно, поле key может быть задано как регулярное выражение, обрамлённое слешами (/).

    • В этом случае /Ctrl/ не сработает при нажатии RCtrl, надо явно обозначать /[LR]Ctrl/ и т.п.
    • Также в этом случае необходимо соблюдать порядок в последовательности Ctrl,Alt,Shift, например /[LR]Alt[LR]CtrlF1/ никогда не сработает.

  3. Опциональное поле flags может содержать набор флагов, разделённых пробелами. Изменения в названиях или интерпретации флагов описаны здесь.

  4. Опциональное поле priority (приоритет) – число от 0 до 100. Значение по умолчанию = 50.
    Макросы, добавляемые посредством MCTL_ADDMACRO, имеют приоритет = 50.

  5. Опциональное поле sortpriority (приоритет для сортировки) – число от 0 до 100. Значение по умолчанию = 50.
    Значение данного поля учитывается при определении порядка расположения макросов в меню выбора макроса.

  6. Опциональное поле selected – булевая величина.
    Это поле указывает, что данный макрос должен быть изначально выбран в меню выбора макроса.

  7. Опциональное поле filemask – строка.
    Применимо только для областей Editor и Viewer. Обрабатывается по правилам, аналогичным тем, которые Фар применяет для масок файлов при поиске из панелей и т.д. Если имя файла, открытого в редакторе или просмотрщике, не соответствует заданной маске, макрос выполняться не будет.

  8. Опциональное поле condition – функция.

    • Вызывается с одним аргументом: имя нажатого ключа. Для автостартующих макросов – вызывается без аргументов.
    • Если возвращает false/nil/ничего, то макрос не исполняется.
    • Если возвращает число, то это число используется вместо priority.
    • При других значениях возврата (например, true) используется priority.

  9. Поле action – функция.
    Если макрос успешно прошёл все предварительные проверки (область действия, флаги, маска файла, приоритет), то вызывается функция action.

  10. Допустимо более одного макроса на сочетание (key,area). В этом случае выполняется макрос с наибольшим приоритетом. Если есть более одного макроса с одинаковым наибольшим приоритетом – выводится меню выбора макроса.
    Автостартующие макросы выполняются все, независимо от приоритета. Очерёдность их исполнения не определена.