Добавление пунктов в меню плагинов
Как и стационарные макросы, добавочные пункты меню загружаются из 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 аргумента:- menu – тип меню (
"Plugins"
или"Disks"
или"Config"
) - area – имя текущей макрообласти
- menu – тип меню (
Поле
action
– функция, вызываемая при активации добавленного пункта меню. Получает те же аргументы, что и функцияexport.Open
(см.luafar_manual.chm
), за исключениемGuid
. При вызове из меню конфигурации, значения обоих аргументов –nil
. Возвращаемое значение игнорируется.