Эти свойства и функции не зависят от области, в которой исполняется в данный момент макропоследовательность.
Far.FullScreenFar.IsUserAdminFar.Heightnumber
Far.Widthnumber
Far.PIDnumber
Far.Titlestring
Far.UpTimenumber
Функции akey, eval, exit, Keys, mmode, msgbox, print, prompt — это глобальные ссылки на одноимённые функции из библиотеки mf (см. ниже).
Функции band, bnot, bor, bxor, lshift, rshift — это глобальные ссылки на одноимённые функции из библиотеки bit64 (см. [LuaFAR manual]).
E=mf.beep([N])Воспроизвести один из системных звуковых сигналов N.
0x000000400x000000300x000000100x000000200x00xFFFFFFFFФункция возвращает 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 может быть набором следующих значений:
0x000000010x000000080x00010000[ 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*’.
0x00000004S идентификаторы переменных окружения заменяются на их значения, например, если пользователь ввёл ‘%TEMP%’, то результат будет содержать ‘C:\TEMP’.
0x00000008History.
0x00000010[ Ok ] и [ Cancel ]. Диалог увеличится на 2 строки.
0x00000020Функция возвращает строку (введённое пользователем значение) или false, если пользователь нажал Esc.
Например, запросить пароль и вывести его:
mf.usermenu(mode,filename)Открывает или создаёт пользовательское меню.
Параметры:
modenumber (0 по умолчанию)
filenamestring или nil
Возвращает: ничего
mode может содержать бит 0x100, в этом случае функция возвращается только по закрытии пользовательского меню (синхронный вызов). Если данный бит равен нулю, то функция возвращается немедленно по открытии меню (асинхронный вызов).
Поведение функции в зависимости от величины младшего байта mode:
0filename игнорируется.
1filename игнорируется.
2filename.
3filename открывается в %FARPROFILE%\Menus (папка создаётся автоматически).
См. также:
V=mf.waitkey([N[,T]])Ожидает нажатие любой клавиши и возвращает её значение.
Параметр N позволяет ограничить время ожидания нажатия, в миллисекундах. Если время истекло, функция возвращает пустую строку (T=0) или 0 (T=1).
Если N не указан или равен 0, то функция будет бесконечно ждать нажатия клавиши.
Параметр T позволяет указать, значение какого типа использовать для клавиши.
0 (по умолчанию)1V=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)
0SelectOrFilter — число), либо найти (если SelectOrFilter — строка) пункт меню
19 (0x200)10 (0x400)Необязательный параметр SelectOrFilter — на какой пункт меню позиционировать курсор, либо фильтрация пунктов.
Может быть:
8 ≡ 0, то позиционировать на указанный пункт меню.
8 ≡ 0, то найти пункт меню.
8 ≡ 1, то установить фильтр меню
Необязательные параметры X и Y — координаты левого верхнего угла меню. Если одна (или обе) равны -1 (по умолчанию), то производится центрирование меню по этой координате.
Возвращаемый результат функции:
0 (если установлен бит 3)0010, то индекс выбранного пункта со знаком минус
Если установлен бит 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)Данная функция добавляет обработчик, который будет вызван по окончанию исполнения макроса.
Параметры:
handlerfunction
Возвращает: ничего
Примечания:
Пример применения:
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.
Параметры:
keynamestring
Возвращает:
valboolean, string, number, or int64
Это значение запрашиваемой величины.
Преобразование типов между Far Manager и Lua осуществляются следующим образом:
boolean ⟶ boolean3-state ⟶ 0,1,2 преобразуются соответственно в false,true,"other"string ⟶ stringinteger ⟶ number (если возможно преобразование без потери точности) или userdata (int64) — величина, создаваемая библиотекой bit64.tpstring ("boolean", "3-state", "string", "integer") Это тип оригинальной величины в Far Manager.
Примечание:
В случае ошибки (некорректный аргумент, или Far Manager не нашёл указанной опции) данная функция прерывает исполнение (вызывает error).
N=Far.DisableHistory([State])Позволяет выключать добавление пунктов в истории во время воспроизведения текущего макроса.
Необязательный параметр State (набор битовых флагов):
0x10x20x40x8Если соответствующий флаг выставлен, то история блокируется.
Если параметр не указан, то просто возвращает текущую маску.
Функция возвращает предыдущее значение.
Примечания:
При старте макроса разрешено добавление во все истории.
Блокировка истории действует только на текущий макрос.
Примеры
Far.DisableHistory()Far.DisableHistory(-1)Far.DisableHistory(5)...=mf.acall(func,...)Данная функция вызывает “асинхронно” функцию func, передавая ей все последующие аргументы.
Параметры:
funcfunction
...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 прерванный макрос продолжает работать.
1S, и вернуть код ошибки компиляции. Последовательность 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-2Mode=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:
12вернуть информацию (область и флаги) об условиях запуска исполняемой в данный момент макропоследовательности. Параметр Value игнорируется.
Функция возвращает в младшем байте номер макрообласти, из которой стартовал макрос:
1234567891011121314151617182550Остальные значения — флаги условий запуска (в т.ч. некоторые служебные флаги).
Условия запуска:
0x000002000x000008000x000010000x000020000x000040000x000080000x000100000x000200000x000400000x000800000x001000000x002000000x004000000x008000000x010000000x020000000x040000000x08000000Дополнительная информация:
0x000001000x40000000Параметр Value:
-10Action
1Action
2Action (триггер)
Функция возвращает предыдущее значение.
Примечание:
mf.mmode не предназначена для использования в функции condition макроса (возвращает false).
result=mf.postmacro(func,...)Функция помещает новый макрос в очередь для исполнения. При исполнении макроса будет вызвана функция func, которой будут переданы аргументы ...
Параметры:
funcfunction
0 или более Lua-величин
Возвращает:
resultboolean
E=mf.sleep(N)N миллисекунд. Отрицательное значение задержки считается ошибкой и функция возвращает 0.
macro=mf.GetMacroCopy(index)Функция mf.GetMacroCopy возвращает копию таблицы загруженного макроса или обработчика события по его индексу во внутреннем массиве (начиная от 1). Если индекс превышает размер массива, возвращается nil — таким образом можно определить конец массива.
Параметры:
indexinteger
Возвращает:
macrotable или 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:
0123Функция возвращает предыдущее состояние видимости линейки:
01-1Действие функции актуально только для текущих панелей, редакторов, вьюеров.
Например:
Смотрите также:
[LuaFAR manual]: [macroapi manual]: