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

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 14130
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 79 times
Been thanked: 447 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.
    (Мануал весьма лаконичен, вместо описания функции старого макроязыка приведены ссылки на устаревший раздел )
См. также:
gotar
Posts: 489
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 25 times
Been thanked: 3 times

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

Post by gotar »

Latest post of the previous page:

я спросил у ИИ: как переписать регулярное выражение ^([^:/]*://)?([^?#:/]*) используя lua pattern Он мне ответил: Галлюцинирует?
User avatar
HaRT
Moderator
Posts: 11102
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 239 times
Been thanked: 378 times

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

Post by HaRT »

gotar wrote: Thu 09 Jan, 2025 21:39 Я точно знаю, что в Lua для Фар есть regexp. Как надо написать чтобы использовать регулярные выражения?
Как юниор, право слово! В документации по LuaFAR не пробовали искать? "%FarHome%\Encyclopedia\luafar_manual.chm" :rtfm2:
gotar wrote: Thu 09 Jan, 2025 21:49Галлюцинирует?
Похоже на то.
Фар есть инструмент, а не нянька. © 2009 DrKnS
gotar
Posts: 489
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 25 times
Been thanked: 3 times

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

Post by gotar »

какой функцией выводить сообщение об ошибке из макроса?
User avatar
HaRT
Moderator
Posts: 11102
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 239 times
Been thanked: 378 times

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

Post by HaRT »

gotar wrote: Thu 09 Jan, 2025 23:42 какой функцией выводить сообщение об ошибке из макроса?
Фар есть инструмент, а не нянька. © 2009 DrKnS
gotar
Posts: 489
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 25 times
Been thanked: 3 times

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

Post by gotar »

просмотрел каждую функцию из luafar_manual.chm. ничего подходящего не увидел. их там много, мог зевнуть, но руководство смотрел. На форуме тоже пробовал искать, И даже в Far Faq заглянул.
User avatar
HaRT
Moderator
Posts: 11102
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 239 times
Been thanked: 378 times

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

Post by HaRT »

gotar wrote: Fri 10 Jan, 2025 00:51 просмотрел каждую функцию из luafar_manual.chm. ничего подходящего не увидел
И всё же поищите, например, по слову message.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4428
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 238 times
Been thanked: 661 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: 489
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 25 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: 11102
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 239 times
Been thanked: 378 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: 489
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 25 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: 6961
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 42 times
Been thanked: 557 times

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

Post by Shmuel »

gotar wrote: Fri 10 Jan, 2025 11:32 и ничего о возвращаемом значении
Раз не написано, значит ничего не возвращает.
User avatar
buniak_a_h
Posts: 4428
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 238 times
Been thanked: 661 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: 489
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 25 times
Been thanked: 3 times

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

Post by gotar »

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

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

Post by Shmuel »

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

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

Post by buniak_a_h »

А ещё "критические" функции рекомендуется вызывать через assert или pcall.
Post Reply

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