Ограничения в использовании некоторых функций
Следующие функции имеют особенности реализации, которые накладывают определённые ограничения на их использование в макросах:
exit
mf.acall
mf.AddExitHandler
mf.usermenu
(в “асинхронном” режиме вызова)Keys
Plugin.Call
Plugin.Command
Plugin.Config
Plugin.Menu
print
Если макрос создаёт корутины с помощью
coroutine.wrap(f)
, то вышеперечисленные функции не будут работать, будучи вызванными из тела функцииf
.
Данного ограничения нет, если корутины создаются с помощьюcoroutine.create(f)
.Вышеперечисленные функции, будучи вызванными прямо или косвенно посредством функции
pcall
, приведут к немедленному возвратуpcall
с результатомfalse
.
Данного ограничения нет при использовании LuaJIT 2.x.Вышеперечисленные функции работают только, будучи вызванными из тела макроса (обычно это функция
action
). Это значит, что данные функции не будут работать, будучи вызванными из:- диалоговых процедур
- функции condition макроса
- обработчиков событий
- и т.д. и т.п.
Ограничения пункта 3 не имеют места, если вышеперечисленные функции вызываются не напрямую,
а посредством mf.postmacro
или far.MacroPost
.