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

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 14580
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.
    (Мануал весьма лаконичен, вместо описания функции старого макроязыка приведены ссылки на устаревший раздел )
См. также:
Shmuel
Posts: 7243
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 635 times

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

Post by Shmuel »

Latest post of the previous page:

John Doe, вот патч, который предотвращает падение. Там 2 бранча на гитхабе, патч, естественно, для Far3.

Code: Select all

--- Old\FarPlugin.cpp	Sun Jul 21 08:58:38 2019
+++ New\FarPlugin.cpp	Wed Jan 22 20:39:33 2020
@@ -309,6 +309,8 @@
 
   try
   {
+    if (Info->OpenFrom == OPEN_FROMMACRO)
+      return nullptr;
     ResetCachedInfo();
     intptr_t Item = 0;
     if (*Info->Guid == MenuCommandsGuid)
User avatar
zg
zero-gravity
Posts: 6207
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 206 times
Contact:

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

Post by zg »

сделайте пул-реквест, у Алекса права есть.
Shmuel
Posts: 7243
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 635 times

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

Post by Shmuel »

zg wrote: Fri 24 Jan, 2020 00:02сделайте пул-реквест
Сделаю в ближайшие дни.
Shmuel
Posts: 7243
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 635 times

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

Post by Shmuel »

@Far group, @John Doe
Просьба применить приложенный патч.
Изменение состоит в снятии ненужных ограничений при создании глобальных таблиц MacroAPI (Area, Editor и т.д.)
Там есть запрет на доступ к метатаблицам этих таблиц, этот запрет был сделан "так, на всякий случай".
Но оказалось, что из-за этого, например, Lunatic Python данные глобальные переменные просто не видит.
patch.diff
(1.19 KiB) Downloaded 240 times
User avatar
HaRT
Moderator
Posts: 11454
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

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

Post by HaRT »

Не работает открытие на редактирование ошибочного скрипта модуля из окошка об ошибке при пере-/загрузке макросов:

1. Вношу в какой-нибудь скрипт модуля ошибку, например, end в самое начало LuaExpAdv.lua.
2. (Для наглядности) перехожу в какую-нибудь неслучайную директорию, например, C:\Windows\System32.
3. Запускаю Фар: far /p"%FARHOME%\Plugins\LuaMacro" D:\ C:\.
4. Получаю , нажимаю [ Edit ].

Ожидаю, что файл LuaExpAdv.lua откроется на редактирование, но вместо этого получаю , в которой почему-то фигурирует путь из п.2, а сообщение из первой ошибки, похоже, трактуется как имя файла. (Также там присутствует символ разрыва строки).
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 7243
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 635 times

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

Post by Shmuel »

HaRT wrote: Tue 11 Oct, 2022 21:11 Не работает открытие на редактирование ошибочного скрипта модуля из окошка об ошибке при пере-/загрузке макросов
  1. Есть такое. По идее можно доработать для учёта подобных случаев.
  2. Безотносительно к данному недостатку в LuaMacro, вызов модулей при (пере)загрузке макросов это плохая практика. Модуль должен вызываться при исполнении макроса.
User avatar
HaRT
Moderator
Posts: 11454
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

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

Post by HaRT »

Shmuel wrote: Tue 11 Oct, 2022 21:32 можно доработать для учёта подобных случаев
Если не слишком сложно, не будете ли так добры? Из любви к прекрасному. :)
Shmuel wrote: Tue 11 Oct, 2022 21:32 вызов модулей при (пере)загрузке макросов это плохая практика
Я, собственно, сам-то модулей не пишу, а натолкнулся на эту ошибку ровно на указанном модуле при слиянии локальных изменений со свежей версией (v2.4). Почему он вызывается при пере-/загрузке макросов, я понятия не имею.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 7243
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 635 times

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

Post by Shmuel »

HaRT wrote: Tue 11 Oct, 2022 21:49 Если не слишком сложно, не будете ли так добры? Из любви к прекрасному.
Постараюсь поиграться с этим, но не уверен насчёт сроков.
HaRT wrote: Tue 11 Oct, 2022 21:49 Я, собственно, сам-то модулей не пишу
Для вызова модуля при перезагрузке макрофайла достаточно указать require <some_module> вне функций макроса, например, в начале макрофайла. А плохая практика это потому, что заранее неизвестно, какие макросы будут вызываться, возможно этот модуль и не потребуется, а мы его уже загрузили "на всякий случай".

Например у меня есть макрос калькулятора, там есть языковая опция Python. Так вот Python это очень тяжёлый модуль (идёт натурально загрузка целого Питона), зачем его грузить заранее, а вдруг я калькулятор в данный день совсем не вызову или вызову, но с языковой опцией Lua.
Last edited by Shmuel on Tue 11 Oct, 2022 22:06, edited 1 time in total.
Shmuel
Posts: 7243
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 635 times

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

Post by Shmuel »

HaRT wrote: Tue 11 Oct, 2022 21:49 Если не слишком сложно
To Far Group: приложен патч для применения из папки plugins\luamacro.
В чейнжлог плагина LuaMacro можно записать что-то вроде "Fix opening a module in the editor from the error message box"
patch.diff
(2.39 KiB) Downloaded 117 times
User avatar
HaRT
Moderator
Posts: 11454
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

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

Post by HaRT »

Исправлено в сборке 6040. Спасибо @Shmuel и @DrKnS!
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 7243
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 635 times

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

Post by Shmuel »

DrKnS, исправьте пожалуйста Version в luamacro\_globalinfo.lua, 768 --> 770.
Ultrabyte
Posts: 208
Joined: Sun 26 Mar, 2023 17:59
Has thanked: 18 times
Been thanked: 20 times

Ликбез по Lua

Post by Ultrabyte »

Добрый день, я пытаюсь освоить Lua, но случился затык.

Существует файловая функция N=fmatch(S,Mask), но в Lua не понимает. Как выйти из положения?
Last edited by Ultrabyte on Thu 27 Apr, 2023 20:11, edited 7 times in total.
Shmuel
Posts: 7243
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 635 times

Ликбез по Lua

Post by Shmuel »

Нужно использовать mf.fmatch.
Энциклопедия в разделе макросов устарела, но есть ещё %FARHOME%\Encyclopedia\macroapi_manual.ru.chm.
User avatar
John Doe
Бюрократ
Posts: 14580
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 »

Ultrabyte, в шапке темы есть красная ссылка "Обновление".
А в "Связанных темах" - ссылка на обсуждение "Избавиться от дублирования в LuaMacro".
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 14580
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 »

Code: Select all

shmuel 2024-01-23 15:09:07+02:00 - build 802

1. Regular macros: make the field 'action' optional.
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 11454
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

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

Post by HaRT »

John Doe wrote: Tue 23 Jan, 2024 18:55 Regular macros: make the field 'action' optional.
Хотелось бы понять, в каких сценариях это может быть полезно. Просто чтобы проглотить какое-то клавиатурное нажатие?
Про condition знаю, но не понимаю, как он может пригодиться в отсутствие action'а.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

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