LuaMacro — Lua как язык макросов

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

LuaMacro — Lua как язык макросов

Post by John Doe »

Проект Spring (обсуждение) влился в стабильную версию Far Manager 3.0.

Таким образом, в макросах сейчас доступны:
  • Стандартные функции и библиотеки Lua.
  • В фаре используется LuaJIT (обсуждение), что (в частности) даёт доступ к библиотеке FFI (обсуждение), и некоторые другие расширения.
  • "Надстройка" над Lua: MoonScript (Подробности и обсуждение)
  • Функции API плагинов, посредством библиотеки LuaFAR (см. luafar_manual.chm)
  • Функции старого макроязыка (API макросов) (Обновление)
    Актуальный мануал, отражающий после перехода на Lua: macroapi_manual.ru.chm.
    (Мануал весьма лаконичен, вместо описания функции старого макроязыка приведены ссылки на устаревший раздел )
См. также:
User avatar
HaRT
Moderator
Posts: 11458
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

LuaMacro — Lua как язык макросов

Post by HaRT »

Latest post of the previous page:

gotar wrote: Fri 10 Jan, 2025 00:51 просмотрел каждую функцию из luafar_manual.chm. ничего подходящего не увидел
И всё же поищите, например, по слову message.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4565
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 242 times
Been thanked: 674 times
Contact:

LuaMacro — Lua как язык макросов

Post by buniak_a_h »

gotar wrote: Thu 09 Jan, 2025 21:39 Я точно знаю, что в Lua для Фар есть regexp. Как надо написать чтобы использовать регулярные выражения?
Я всё же отвечу, т.к. по документации это искать бесполезно, если не знать где искать.
Есть таблица regex; в ней есть функции match и (для повышения эффективности) new и exec. Также есть gmatch . Остальное - в документации
gotar wrote: Thu 09 Jan, 2025 23:42 какой функцией выводить сообщение об ошибке из макроса?
far.Message с флагом 'w' или mf.msgbox с флагом 0x00000001
Last edited by buniak_a_h on Fri 10 Jan, 2025 03:10, edited 1 time in total.
gotar
Posts: 519
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 31 times
Been thanked: 3 times

LuaMacro — Lua как язык макросов

Post by gotar »

Что должна возвращать функция action макроса? Я помню что возвращаемое значение както обрабатывается или было предложение както его обрабатывать
Last edited by gotar on Fri 10 Jan, 2025 11:16, edited 1 time in total.
User avatar
HaRT
Moderator
Posts: 11458
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

LuaMacro — Lua как язык макросов

Post by HaRT »

gotar wrote: Fri 10 Jan, 2025 11:14 Что должна возвращать функция action макроса? Я помню что возвращаемое значение както обрабатывается или было предложение както его обрабатывать
:rtfm2: "%FarHome%\Encyclopedia\macroapi_manual.ru.chm"
Фар есть инструмент, а не нянька. © 2009 DrKnS
gotar
Posts: 519
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 31 times
Been thanked: 3 times

LuaMacro — Lua как язык макросов

Post by gotar »

Вот что я прочитал:
Опциональное поле action – функция.
Если макрос успешно прошёл все предварительные проверки (область действия, флаги, маска файла, приоритет), то вызывается функция action.
Вызывается с одним аргументом: копией таблицы-аргумента функции Macro. Это та же самая таблица, которая передаётся вторым аргуметом в функцию condition.
и ничего о возвращаемом значении
Last edited by gotar on Fri 10 Jan, 2025 11:34, edited 1 time in total.
Shmuel
Posts: 7246
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 636 times

LuaMacro — Lua как язык макросов

Post by Shmuel »

gotar wrote: Fri 10 Jan, 2025 11:32 и ничего о возвращаемом значении
Раз не написано, значит ничего не возвращает.
User avatar
buniak_a_h
Posts: 4565
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 242 times
Been thanked: 674 times
Contact:

LuaMacro — Lua как язык макросов

Post by buniak_a_h »

gotar wrote: Fri 10 Jan, 2025 11:32 и ничего о возвращаемом значении
О возвращаемом значении action из макросов не слышал. Зато у обработчика событий результат значим. Его значение зависит от группы событий и типа. Например, для обработки группы DialogEvent:
Возвращаемое значение
  • 1 - плагин самостоятельно обработал событие. Переменная ProcessDialogEventInfo.FarDialogEvent.Result будет использована в качестве возвращаемого значения обработчика диалога.
  • 0 - продолжить обработку события.
gotar
Posts: 519
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 31 times
Been thanked: 3 times

LuaMacro — Lua как язык макросов

Post by gotar »

если функция обработки макроса вызвала другую функцию эта функция вызвала третью и т.д. и на большом уровне вложенности обнаружилось что продолжать обработку макроса из за ошибки бессмысленно. Есть ли другая возможность завершить макрос кроме как return из главной функции?
Shmuel
Posts: 7246
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 636 times

LuaMacro — Lua как язык макросов

Post by Shmuel »

gotar wrote: Fri 10 Jan, 2025 11:59 Есть ли другая возможность завершить макрос кроме как return из главной функции?
exit() или mf.exit(), что одно и то же.
User avatar
buniak_a_h
Posts: 4565
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 242 times
Been thanked: 674 times
Contact:

LuaMacro — Lua как язык макросов

Post by buniak_a_h »

А ещё "критические" функции рекомендуется вызывать через assert или pcall.
User avatar
phidel
Posts: 104
Joined: Wed 29 Jun, 2011 17:21
Has thanked: 30 times
Been thanked: 6 times
Contact:

Ликбез по Lua

Post by phidel »

Скажите пожалуйста, в чем разница между Editor и editor (в скриптах внутри far manager)?
User avatar
HaRT
Moderator
Posts: 11458
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

LuaMacro — Lua как язык макросов

Post by HaRT »

phidel wrote: Thu 03 Apr, 2025 01:52 в чем разница между Editor и editor (в скриптах внутри far manager)?
(Обратите внимание, я перенёс обсуждение в более подходящую тему.)
Конвенция такова, что в _G с заглавной таблицы из Macro API, а со строчной — из Plugin API. У них разное историческое происхождение и разные принципы формирования, они описываются отдельными CHM-файлами справки. Macro API более высокоуровневый, его легче применять, но многое с его помощью не получится сделать (по меньшей мере, сделать прилично); Plugin API более низкоуровневый, сложнее в применении, но и более мощный. Вроде бы есть ситуации, когда Plugin API доступен, а Macro API — нет. Если я в чём-то ошибся, пусть знатоки меня поправят.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4565
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 242 times
Been thanked: 674 times
Contact:

LuaMacro — Lua как язык макросов

Post by buniak_a_h »

phidel wrote: Thu 03 Apr, 2025 01:52 Скажите пожалуйста, в чем разница между Editor и editor (в скриптах внутри far manager)?
Формально: это - две разные таблицы, каждая со своим набором функций и пропертей.
Вообще, регистрозависимость LUA - это песня! Есть panel и Panel, far и Far и т.д. Но самый кайф - в том, что у функций таблицы panel признак what panel 1=active_panel, 0=inactive_panel, а у функций/пропертей таблицы Panel - активной (panelType=0) или пассивной (panelType=1). Я пишу макросы довольно давно, но до сих пор не могу запомнить, приходится в мануал лазить. :evil:
Last edited by buniak_a_h on Thu 03 Apr, 2025 08:05, edited 1 time in total.
Shmuel
Posts: 7246
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 636 times

LuaMacro — Lua как язык макросов

Post by Shmuel »

HaRT wrote: Thu 03 Apr, 2025 02:26 Вроде бы есть ситуации, когда Plugin API доступен, а Macro API — нет.
  • LuaFAR Plugin API доступен напрямую всем LuaFAR плагинам.
  • MacroAPI доступен напрямую только плагину LuaMacro.
  • Любой плагин может пользоваться обоими API через "посредника" (API-функцию MacroControl).
И ещё некоторые функции MacroAPI (например, Keys) могут быть вызваны не отовсюду. Подробнее - в мануале MacroAPI.
Last edited by Shmuel on Thu 03 Apr, 2025 09:33, edited 6 times in total.
Shmuel
Posts: 7246
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 636 times

LuaMacro — Lua как язык макросов

Post by Shmuel »

К сведению макрописателей: mf.usermenu теперь работает также из Far, запущенного с ключами -e или -v.
Last edited by Shmuel on Fri 07 Nov, 2025 08:35, edited 2 times in total.
Post Reply

Return to “Обсуждение макросов”