Добавление пунктов в меню плагинов

Far Manager Macro System

Добавление пунктов в меню плагинов


Как и стационарные макросы, добавочные пункты меню загружаются из Lua- и MoonScript-файлов, находящихся в папке %FARPROFILE%\Macros\scripts и её подпапках.

Загрузка пункта меню происходит при вызове глобальной функции MenuItem, которой передаётся один аргумент – таблица с параметрами. При успешной загрузке функция возвращает true.

MenuItem {
  description = "Menu item";                        -- string (опциональное поле)
  menu   = "Plugins Disks Config";                  -- string
  area   = "Shell Editor Viewer Dialog Menu";       -- string (опциональное поле)
  guid   = "A435D567-AD64-4DD1-8C61-28CB90358817";  -- string
  text   = function(menu,area) return "Hello!" end; -- string или function
  action = function(OpenFrom,Item) ...... end;      -- function
}

Поля description и area – опциональные. Их значения по умолчанию – пустая строка. Остальные поля – обязательные.

  • Поле menu содержит перечисление меню Far Manager, в которые нужно добавить данный пункт меню. Допустимые значения элементов: "Plugins", "Disks" и "Config" – обозначают соответственно меню плагинов, меню дисков и меню конфигурации плагинов.

  • Поле area содержит перечисление областей, при вызове из которых меню плагинов нужно добавить данный пункт меню. Это поле используется только если поле menu содержит элемент Plugins. Допустимые значения элементов совпадают с названиями макрообластей.

  • Поле guid содержит уникальный идентификатор (GUID) данного пункта меню.

  • Поле text – если тип данного поля – строка, то она используется непосредственно как текст пункта меню.
    Если тип данного поля – функция, то пункт меню будет добавлен только в случае, если эта функция возвратит строку.
    Функция получает 2 аргумента:

    1. menu – тип меню ("Plugins" или "Disks" или "Config")
    2. area – имя текущей макрообласти

  • Поле action – функция, вызываемая при активации добавленного пункта меню. Получает те же аргументы, что и функция export.Open (см. luafar_manual.chm), за исключением Guid. При вызове из меню конфигурации, значения обоих аргументов – nil. Возвращаемое значение игнорируется.