...=Plugin.Call(PluginId,...)Вызвать плагин, имеющий идентификатор PluginId с параметрами ....
Параметры:
PluginIdstring (GUID плагина в текстовом представлении)
...ноль или более дополнительных параметров
Параметры передаются плагину в соответствии с их Lua-типами:
nil ⟶ FMVT_NILboolean ⟶ FMVT_BOOLEANnumber ⟶ FMVT_DOUBLEint64 ⟶ FMVT_INTEGER (int64 — тип userdata, создаваемый библиотекой bit64)string ⟶ FMVT_STRING (автоматически преобразуется из UTF-8 в UTF-16LE){string} ⟶ FMVT_BINARY (для того, чтобы передать произвольный стринг без преобразования UTF-8 ⟶ UTF16LE, его нужно передавать, помещённым в таблицу как элемент с ключом 1)Возвращает:
...ноль или более возвращаемых значений
Величины, возвращаемые плагином через структуру FarMacroCall, передаются макросу следующим образом:
FMVT_NIL ⟶ nilFMVT_BOOLEAN ⟶ booleanFMVT_DOUBLE ⟶ numberFMVT_INTEGER ⟶ number, если “укладывается” в 53 бита, иначе int64FMVT_STRING ⟶ string (автоматически преобразуется из UTF-16LE в UTF-8)FMVT_BINARY ⟶ table (в таблице передаётся строка как элемент с ключом 1; передаётся как есть, без преобразования)FMVT_POINTER ⟶ light userdataFMVT_ARRAY ⟶ table: массив элементов; в таблице установлено два поля:
["type"] = "array", и["n"] = количество элементов массиваPlugin.Call вызывает экспортируемую функцию OpenW требуемого плагина, передавая указанные параметры.
Дальнейшие действия зависят от того, как плагин обработал этот параметр.
Функция возвращает false, если вызываемого плагина нет. В других случаях функция возвращает значения, полученные от плагина.
Функция осуществляет “асинхронный” вызов плагина. Если вызов в действительности оказался асинхронным (например, если плагин вывел диалог на экран), функция возвращает true, не дожидаясь возврата от плагина, и макрос продолжает исполнение.
Если вызов в действительности оказался синхронным, макросу возвращаются величины в соответствии с тем, что вернул плагин:
0, макросу возвращается false.1 или INVALID_HANDLE_VALUE, макросу возвращается true.FarMacroCall, см. выше....=Plugin.SyncCall(PluginId,...)Синхронный вызов плагина
Данная функция работает идентично Plugin.Call, за исключением того, что:
OpenW плагина.Plugin.Call.N=Plugin.Command(Guid,Command)Аналог вызова плагина по префиксу из панелей без необходимости запоминать/очищать/восстанавливать текущее содержимое командной строки.
Guid можно посмотреть в диалоге “Plugin information” (F3 в списке F11 или Alt+Shift+F9): поле “Plugin GUID”.
Если плагин с таким Guid не поддерживает вызов по префиксу или при вызове не из панелей — функция вернёт ошибку.
Функция возвращает true — плагин/пункт найден или false — в случае ошибки.
N=Plugin.Config(Guid[,MenuGuid])Аналог вызова плагина из меню “Параметры плагинов” без необходимости задавать горячие клавиши или искать плагин в списке. Работает только в панелях.
Guid и MenuGuid можно посмотреть в диалоге “Plugin information” (F3 в списке): поля “Plugin GUID” и “Plugin item GUID” соответственно.
Обязательно нужно указать Guid плагина. MenuGuid требуется указывать в том случае, если плагин экспортирует более одного пункта меню.
Если плагин отсутствует в списке “Параметры плагинов” или при вызове не из панелей — функция вернёт ошибку.
Функция возвращает true — плагин/пункт найден или false — в случае ошибки.
N=Plugin.Exist(Guid)Позволяет узнать наличие в системе плагина с идентификатором Guid.
Функция возвращает true — плагин/пункт найден или false — в случае ошибки.
N=Plugin.Menu(Guid[,MenuGuid])Аналог вызова плагина из меню плагинов по F11 без необходимости задавать горячие клавиши или искать плагин в списке.
Guid и MenuGuid можно посмотреть в диалоге “Plugin information” (F3 в списке): поля “Plugin GUID” и “Plugin item GUID” соответственно.
Обязательно нужно указать Guid плагина. MenuGuid требуется указывать в том случае, если плагин экспортирует более одного пункта меню.
Если плагин отсутствует в списке F11 для текущей макрообласти — функция вернёт ошибку.
Функция возвращает true — плагин/пункт найден или false — в случае ошибки.
Пример использования — открыть FarColorer\Outliner list:
N=Plugin.Load(DllPath[,ForceLoad])Загрузить плагин с именем dll-модуля DllPath. Если указан ForceLoad (число, отличное от 0), то плагин загружается сразу в память.
Функция возвращает число, отличное от 0 — плагин загружен или 0 — в случае ошибки.
N=Plugin.Unload(DllPath)Выгрузить плагин с именем dll-модуля DllPath.
Функция возвращает 1 — плагин выгружен или 0 — в случае ошибки.