-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathasync_limits.text
More file actions
42 lines (30 loc) · 2.08 KB
/
async_limits.text
File metadata and controls
42 lines (30 loc) · 2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Ограничения в использовании некоторых функций
=============================================
Следующие функции имеют особенности реализации, которые накладывают определённые
ограничения на их использование в макросах:
- `mf.exit`
- `mf.acall`
- `mf.AddExitHandler`
- `mf.usermenu` (в "асинхронном" режиме вызова)
- `mf.Keys`
- `Plugin.Call`
- `Plugin.Command`
- `Plugin.Config`
- `Plugin.Menu`
- `mf.print`
1. Если макрос создаёт корутины с помощью `coroutine.wrap(f)`, то вышеперечисленные
функции не будут работать, будучи вызванными из тела функции `f`.
Данного ограничения нет, если корутины создаются с помощью `coroutine.create(f)`.
2. Вышеперечисленные функции, будучи вызванными прямо или косвенно посредством функции `pcall`,
приведут к немедленному возврату `pcall` с результатом `false`.
Данного ограничения нет при использовании [LuaJIT] 2.x.
3. Вышеперечисленные функции работают только, будучи вызванными из тела макроса
(обычно это функция `action`).
Это значит, что данные функции не будут работать, будучи вызванными из:
- диалоговых процедур
- функции `condition` макроса
- обработчиков событий
- и т.д. и т.п.
Ограничения пункта 3 не имеют места, если вышеперечисленные функции вызываются не напрямую,
а посредством `mf.postmacro` или `far.MacroPost`.
[LuaJIT]: http://luajit.org/luajit.html