Эти свойства и функции не зависят от области, в которой исполняется в данный момент макропоследовательность.
Far.FullScreen
Far.IsUserAdmin
Far.Height
number
Far.Width
number
Far.PID
number
Far.Title
string
Far.UpTime
number
Функции akey
, eval
, exit
, Keys
, mmode
, msgbox
, print
, prompt
— это глобальные ссылки на одноимённые функции из библиотеки mf
(см. ниже).
Функции band
, bnot
, bor
, bxor
, lshift
, rshift
— это глобальные ссылки на одноимённые функции из библиотеки bit64
(см. [LuaFAR manual]).
E=mf.beep([N])
Воспроизвести один из системных звуковых сигналов N
.
0x00000040
0x00000030
0x00000010
0x00000020
0x0
0xFFFFFFFF
Функция возвращает true
или false
(в случае неудачи).
S=mf.key(V)
Преобразует параметр V
в строковый эквивалент названия клавиши.
Если V
— строка, то проверяется правильность написания клавиши и она же возвращается.
Если V
— число, то происходит попытка преобразовать значение в текстовый эквивалент названия клавиши.
В случае ошибок — возвращается пустая строка.
Примечание:
В настоящий момент функция не представляет практической ценности, поскольку числовые значения клавиш не употребляются.
Keys(...)
Послать один или более ключей Far Manager’у.
Параметры:
Один или больше аргументов типа string
.
Каждый аргумент может содержать несколько ключей, разделённых пробельными символами.
Аргументы регистронезависимы.
Перед каждым ключом может быть указан множитель, например “3*Down
” эквивалентно “Down Down Down
”.
Специальные ключи:
AKey
”SelWord
”XLat
”mf.xlat()
)
EnOut
”mmode(1,0)
)
DisOut
”mmode(1,1)
)
Пример:
См. также:
N=mf.msgbox([Title[,Text[,Flags]]])
Показывает сообщение Text
с заголовком Title
.
В параметре Text
строки разбиваются символом ‘\n
’.
Flags
может быть набором следующих значений:
0x00000001
0x00000008
0x00010000
[ Ok ]
0x00020000
[ Ok ]
и [ Cancel ]
0x00030000
[ Abort ]
, [ Retry ]
и [ Ignore ]
0x00040000
[ Yes ]
и [ No ]
0x00050000
[ Yes ]
, [ No ]
и [ Cancel ]
0x00060000
[ Retry ]
и [ Cancel ]
Если параметр Flags
равен 0
(или не указан), то выводится стандартный диалог с кнопкой [ Ok ]
Функция возвращает номер выбранной кнопки (начиная с 1
), или 0
, если пользователь отменил сообщение
mf.print(Str)
Функция предназначена для вставки произвольного текста Str
в редактор, командную строку, элементы ввода в диалогах, etc.
Допускается применение следующих escape-последовательностей:
\"
"
’
\'
'
’
\\
\
’
\n
\n
’
\t
\t
’
\a
\b
\b
\f
\f
\v
\v
\N
, \NN
, \NNN
\xNN
См. Примеры
mf.printconsole(...)
Функция выводит (“печатает”) свои аргументы в консоль.
Параметры:
...
S=mf.prompt([Title[,Prompt[,Flags[,Src[,History]]]]])
Функция позволяет ввести одну строку текста.
Параметры: Title
— заголовок диалога, Prompt
— приглашения для ввода, Src
— начальное значение строки ввода, History
— имя истории ввода.
Flags
может быть набором следующих значений (аналогичных константам FIB_*
):
0x00000002
*
’.
0x00000004
S
идентификаторы переменных окружения заменяются на их значения, например, если пользователь ввёл ‘%TEMP%
’, то результат будет содержать ‘C:\TEMP
’.
0x00000008
History
.
0x00000010
[ Ok ]
и [ Cancel ]
. Диалог увеличится на 2 строки.
0x00000020
Функция возвращает строку (введённое пользователем значение) или false
, если пользователь нажал Esc
.
Например, запросить пароль и вывести его:
mf.usermenu(mode,filename)
Открывает или создаёт пользовательское меню.
Параметры:
mode
number
(0
по умолчанию)
filename
string
или nil
Возвращает: ничего
mode
может содержать бит 0x100
, в этом случае функция возвращается только по закрытии пользовательского меню (синхронный вызов). Если данный бит равен нулю, то функция возвращается немедленно по открытии меню (асинхронный вызов).
Поведение функции в зависимости от величины младшего байта mode:
0
filename
игнорируется.
1
filename
игнорируется.
2
filename
.
3
filename
открывается в %FARPROFILE%\Menus
(папка создаётся автоматически).
См. также:
V=mf.waitkey([N[,T]])
Ожидает нажатие любой клавиши и возвращает её значение.
Параметр N
позволяет ограничить время ожидания нажатия, в миллисекундах. Если время истекло, функция возвращает пустую строку (T=0
) или 0
(T=1
).
Если N
не указан или равен 0
, то функция будет бесконечно ждать нажатия клавиши.
Параметр T
позволяет указать, значение какого типа использовать для клавиши.
0
(по умолчанию)1
V=Menu.Show(Items,...
Создаёт и отображает на экране меню.
Параметр Items
: пункты меню, разделённые Lf (“\n
”) или CrLf (“\r\n
”)
Могут начинаться (cимвол+пробел) со специальных символов:
(возможны некоторые комбинации)
\1
\2
\3
и \4
)
\3
\4
Дополнительные параметры:
[,TitleAndFooter
[,Flags
[,SelectOrFilter
[,X
[,Y]]]]])
Необязательный параметр TitleAndFooter
: заголовок и футер меню, разделённые Lf (“\n
”) или CrLf (“\r\n
”).
Один или оба могут отсутствовать.
Необязательный параметр Flags
— набор битов, управляющих поведением и отображением меню:
0
—2
Тип рамки меню: (по умолчанию:100
)
001
(0x1
)010
(0x2
)011
(0x3
)100
(0x4
)101
(0x5
)3
(0x8
)4
(0x10
)5
(0x20
)6
(0x40
)7
(0x80
)8
(0x100
)как трактовать SelectOrFilter
: (по умолчанию: 0
)
0
SelectOrFilter
— число), либо найти (если SelectOrFilter
— строка) пункт меню
1
9
(0x200
)10
(0x400
)Необязательный параметр SelectOrFilter
— на какой пункт меню позиционировать курсор, либо фильтрация пунктов.
Может быть:
8
≡ 0
, то позиционировать на указанный пункт меню.
8
≡ 0
, то найти пункт меню.
8
≡ 1
, то установить фильтр меню
Необязательные параметры X
и Y
— координаты левого верхнего угла меню. Если одна (или обе) равны -1
(по умолчанию), то производится центрирование меню по этой координате.
Возвращаемый результат функции:
0
(если установлен бит 3
)0
0
10
, то индекс выбранного пункта со знаком минус
Если установлен бит 4
, то список отмеченных пунктов меню, разделённых \n
. Если установлены и бит 3
и бит 4
, то список индексов отмеченных пунктов меню, разделённых \n
. В меню доступны следующие сочетания клавиш: (пометка возможна только при установленном бите 4
)
Пример использования — навигация по установленным закладкам редактора:
Macro {
description="Стековые закладки";
area="Editor"; key="AltB";
action=function()
local S = ""
local N = BM.Stat(0)
for i=1,N do
BM.Goto(i)
S = S..Editor.Value.."\n"
end
local title = "Стековые закладки\nНавигация - Up/Down, Выход - Esc, F10"
local I = 1
repeat
I = Menu.Show(S,title,0x600,math.abs(I),80,Far.Height-N-5)
if I>0 then
BM.Goto(I)
Keys("SelWord")
else
I = 0
end
until i==0
end;
}
mf.AddExitHandler(handler)
Данная функция добавляет обработчик, который будет вызван по окончанию исполнения макроса.
Параметры:
handler
function
Возвращает: ничего
Примечания:
Пример применения:
local fp = assert(io.open("some file.txt"))
mf.AddExitHandler(function() fp:close() end)
-- use fp; return from multiple places; do not care about closing fp
См. также:
V=Far.Cfg_Get(Key,Name)
Far.GetConfig
)
Функция, позволяет получить основные текущие настройки Far Manager. В случае ошибки (нет такого Key
или Name
или внутренняя ошибка) возвращает false
.
Например,
Far.Cfg_Get("System.KnownIDs","Network")
773B5051-7C5F-4920-A201-68051C4176A4
”, которое соответствует ID
плагина Network.
Far.Cfg_Get("Macros","DateFormat")
mf.date
.
Far.Cfg_Get("Macros","TimeFormat")
false
, т.к. значения с именем “TimeFormat
” не существует.
Внимание!
В процессе разработки Far Manager настройки (имена ключей и имена значений) могут меняться, добавляться и удаляться, поэтому Вы используете функцию на свой страх и риск. Поддержка функционала (имена ключей и имена значений) со стороны разработчиков не гарантирована.
val,tp=Far.GetConfig(keyname)
Функция, позволяет получить основные текущие настройки Far Manager.
Параметры:
keyname
string
Возвращает:
val
boolean
, string
, number
, or int64
Это значение запрашиваемой величины.
Преобразование типов между Far Manager и Lua осуществляются следующим образом:
boolean
⟶ boolean
3-state
⟶ 0
,1
,2
преобразуются соответственно в false
,true
,"other"
string
⟶ string
integer
⟶ number
(если возможно преобразование без потери точности) или userdata
(int64
) — величина, создаваемая библиотекой bit64
.tp
string
("boolean"
, "3-state"
, "string"
, "integer"
) Это тип оригинальной величины в Far Manager.
Примечание:
В случае ошибки (некорректный аргумент, или Far Manager не нашёл указанной опции) данная функция прерывает исполнение (вызывает error
).
N=Far.DisableHistory([State])
Позволяет выключать добавление пунктов в истории во время воспроизведения текущего макроса.
Необязательный параметр State
(набор битовых флагов):
0x1
0x2
0x4
0x8
Если соответствующий флаг выставлен, то история блокируется.
Если параметр не указан, то просто возвращает текущую маску.
Функция возвращает предыдущее значение.
Примечания:
При старте макроса разрешено добавление во все истории.
Блокировка истории действует только на текущий макрос.
Примеры
Far.DisableHistory()
Far.DisableHistory(-1)
Far.DisableHistory(5)
...=mf.acall(func,...)
Данная функция вызывает “асинхронно” функцию func
, передавая ей все последующие аргументы.
Параметры:
func
function
...
0
или более Lua-величин
Возвращает:
...
0
или более Lua-величин
mf.acall
является как бы специализацией Plugin.Call
для плагина LuaMacro, но, в отличие от Plugin.Call
, она позволяет выполнять код в контексте вызывающей функции, а также передавать и возвращать любые Lua-величины.
Как и Plugin.Call
, mf.acall
является “асинхронной”: при выводе функцией func
диалога или меню на экран, mf.acall
сразу завершает работу и возвращает true
.
Если функция func
не выводит диалог или меню на экран, то имеет место “синхронный” режим работы: в этом случае mf.acall
возвращает все величины, возвращённые функцией func
.
См. также:
V=mf.akey(Mode[,Type])
Возвращает название или код клавиши, вызвавшей макропоследовательность.
Mode
: 0
— возвращается код клавиши, 1
— возвращается наименование клавиши.
Type
: 0
— возвращает реально нажатое сочетание, которым вызывался макрос, 1
— возвращает клавишу, на которую назначен макрос.
Пример см. в разделе Примеры.
Примечания:
mf.akey(1,1)
.mf.akey
не предназначена для использования в функции condition
макроса (возвращает false
). Вместо неё следует использовать аргумент функции condition
: AKey
(см. [macroapi manual]).E=mf.eval(S[,Mode[,Lang]])
Выполнить или проверить макропоследовательность.
Mode
:
0
Выполнить макропоследовательность, заданную строкой S
.
Если S
содержит синтаксические ошибки, то макропоследовательность исполняться не будет.
Far Manager компилирует последовательность S
. Если нет ошибок, то состояние текущего макроса сохраняется и начинает выполняться последовательность S
. После исполнения S
прерванный макрос продолжает работать.
1
S
, и вернуть код ошибки компиляции. Последовательность S
исполняться не будет.
2
Выполнить макрос, назначенный на сочетание клавиш S
.
Параметр S
задаётся форматом “[Area/]Key
”. Здесь Area
— макрообласть, из которой будет исполнен макрос; /
— разделитель; Key
— название клавиши.
Если “Area/
” указан, то будет вызван макрос, назначенный на Key
только в указанной области Area
.
Пример: mf.eval("Shell/CtrlP",2)
Если в качестве “Area/
” указана строка “./
”, то будет вызван макрос, назначенный на Key
только в текущей области.
Пример: mf.eval("./CtrlP",2)
Если “Area/
” не указан, то будет вызван макрос, назначенный на Key
в текущей области. Если в текущей области Key
не обнаружен, то будет выполнен макрос, назначенный на Key
из области Common
.
Пример: eval("CtrlP",2)
Если Key
не обнаружен, то функция вернёт целочисленное значение -2
.
Если Key
обнаружен, то состояние текущего макроса сохраняется и начинает выполняться макрос, назначенный на сочетание клавиш S
. После исполнения S
прерванный макрос продолжает работать.
3
Проверить макропоследовательность, заданную строкой S
, и вернуть строку-сообщение с ошибкой компиляции.
Последовательность S
исполняться не будет.
Строка будет пустой, если ошибок нет, или содержать сообщение, полученное от интерпретатора Lua.
Для Mode
: 0
, 1
, 3
:
Lang
: указывает язык кода параметра S
(для Mode
: 0
, 1
, 3
)
Допустимые значения: “lua
” и “moonscript
”.
Значение по умолчанию — “lua
”.
Параметр S
может обозначать скрипт-файл, если этот параметр начинается с символа ‘@
’.
В этом случае параметр S
должен иметь следующий формат:
@<имя файла-скрипта> [<параметры скрипта>]
Пример:
Для всех режимов, кроме Mode=3
, функция возвращает следующие значения:
0
-1
-2
Mode=2
сочетание клавиш S
не найдено или макрос заблокирован
11
Для Mode=2
дополнительно может возвращаться следующее:
0
(нормальный возврат): дополняется значениями, возвращаемыми “запускаемым” макросом.-3
: если было выведено меню выбора макроса, и пользователь его отменил.-4
: если “запускаемый” макрос был прерван в результате ошибки времени исполнения.Примечания:
При выполнении макропоследовательности для неё будет установлено окружение текущего исполняемого макроса, но не локальные переменные.
Режимы 0
, 1
, 3
существуют из соображений обратной совместимости, вместо них рациональнее использовать штатные функции языка (loadstring
/loadfile
/dofile
/mooonscript.loadstring
/etc).
mf.exit()
Завершить работу макроса.
Параметры: нет
Возвращает: ничего
См. также:
N=mf.mmode(Action[,Value])
Управление параметрами текущего макроса.
Параметр Action
:
1
2
вернуть информацию (область и флаги) об условиях запуска исполняемой в данный момент макропоследовательности. Параметр Value
игнорируется.
Функция возвращает в младшем байте номер макрообласти, из которой стартовал макрос:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
255
0
Остальные значения — флаги условий запуска (в т.ч. некоторые служебные флаги).
Условия запуска:
0x00000200
0x00000800
0x00001000
0x00002000
0x00004000
0x00008000
0x00010000
0x00020000
0x00040000
0x00080000
0x00100000
0x00200000
0x00400000
0x00800000
0x01000000
0x02000000
0x04000000
0x08000000
Дополнительная информация:
0x00000100
0x40000000
Параметр Value
:
-1
0
Action
1
Action
2
Action
(триггер)
Функция возвращает предыдущее значение.
Примечание:
mf.mmode
не предназначена для использования в функции condition
макроса (возвращает false
).
result=mf.postmacro(func,...)
Функция помещает новый макрос в очередь для исполнения. При исполнении макроса будет вызвана функция func
, которой будут переданы аргументы ...
Параметры:
func
function
0
или более Lua-величин
Возвращает:
result
boolean
E=mf.sleep(N)
N
миллисекунд. Отрицательное значение задержки считается ошибкой и функция возвращает 0
.
macro=mf.GetMacroCopy(index)
Функция mf.GetMacroCopy
возвращает копию таблицы загруженного макроса или обработчика события по его индексу во внутреннем массиве (начиная от 1
). Если индекс превышает размер массива, возвращается nil
— таким образом можно определить конец массива.
Параметры:
index
integer
Возвращает:
macro
table
или nil
Примечания:
disabled
” ≡ true
.area
” типа string
, которое присутствует только у макросов.Содержимое глобальных таблиц API макроязыка можно просмотреть с помощью функции pairs
, отдельно для функций и “свойств” таблицы.
На примере таблицы Editor
:
for k,v in pairs(Editor) do .... end -- для функций
for k,v in pairs(Editor.properties) do .... end -- для свойств
N=Far.KeyBar_Show([Mode])
Позволяет управлять видимостью линейки функциональных клавиш.
Необязательный параметр Mode
:
0
1
2
3
Функция возвращает предыдущее состояние видимости линейки:
0
1
-1
Действие функции актуально только для текущих панелей, редакторов, вьюеров.
Например:
Смотрите также:
[LuaFAR manual]: [macroapi manual]: