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

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 11395
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Mon 16 Jul, 2012 13:44

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

Таким образом, в макросах сейчас доступны:
  • Стандартные функции и библиотеки Lua.
  • В фаре используется LuaJIT (обсуждение), что (в частности) даёт доступ к библиотеке FFI (обсуждение).
  • "Надстройка" над Lua: MoonScript (Подробности и обсуждение)
  • Функции API плагинов, посредством библиотеки LuaFAR (см. luafar_manual.chm)
  • Функции старого макроязыка (API макросов)
    Актуальный мануал, отражающий после перехода на Lua: macroapi_manual.ru.chm.
    (Мануал весьма лаконичен, вместо описания функции старого макроязыка приведены ссылки на устаревший раздел )
См. также:

Shmuel
Posts: 5229
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Thu 18 Jun, 2015 14:25

Latest post of the previous page:

John Doe wrote: которая у нас беспардонно переопределена.
Полагаю, что не беспардонно, а вполне осмысленно.

User avatar
John Doe
Бюрократ
Posts: 11395
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Thu 18 Jun, 2015 14:33

Shmuel wrote:
John Doe wrote: которая у нас беспардонно переопределена.
Полагаю, что не беспардонно, а вполне осмысленно.
Будь моя воля, то я бы переосмыслил, т.к. из-за совпадения имени со штатной функцией lua нередко возникают проблемы.

Shmuel
Posts: 5229
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Thu 18 Jun, 2015 14:50

У меня - редко (даже не помню, когда было в последний раз).
Но дело не в этом: в процессе перехода на Lua приходилось принимать множество решений за относительно короткое время. Естественно, невозможно было в ста процентах случаев попадать в яблочко. А дальше уже менять что-либо стало затруднительно из-за обратной совместимости.

User avatar
John Doe
Бюрократ
Posts: 11395
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Thu 18 Jun, 2015 16:43

Я взял себе за правило в макросах всегда использовать mf.print, на всякий случай.

И есть связанный вопрос, по следующему фрагменту из api.lua:

Code: Select all

_G.eval, _G.msgbox, _G.prompt = mf.eval, mf.msgbox, mf.prompt

mf.Keys, mf.exit, mf.print, mf.printf = _G.Keys, _G.exit, _G.print, _G.printf
Все 7 функций дублируются в mf и в _G.
Однако любопытно почему для eval,msgbox,prompt "первична" таблица _G, а для прочих — mf?

P.S.
Вопрос конечно отвлечённый, но не совсем, например функция printf использует _G.print, что будет иметь значение, пожелай я для каких-то целей переопределить _G.print

Shmuel
Posts: 5229
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Thu 18 Jun, 2015 16:50

John Doe wrote: Однако любопытно почему для eval,msgbox,prompt "первична" таблица _G, а для прочих — mf?
Просто сделано неединообразно, никакой причины другой не существует.
John Doe wrote: функция printf использует _G.print, что будет иметь значение, пожелай я для каких-то целей переопределить _G.print
Я бы printf выбросил, практика показывает, что ею никто не пользуется (и я тоже). Но кто знает, сейчас выбросишь, а завтра шум поднимется.

User avatar
John Doe
Бюрократ
Posts: 11395
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Thu 18 Jun, 2015 16:57

Shmuel wrote: Но кто знает, сейчас выбросишь, а завтра шум поднимется.
Чем раньше выбросишь, тем меньше вероятность что кто-то успеет использовать.

User avatar
sToLp
Posts: 763
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 56 times
Been thanked: 5 times

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

Post by sToLp » Thu 18 Jun, 2015 16:59

John Doe wrote:я лишь предположил причину странного сообщения у sToLp
Это подтверждаю.

Однако и после деинсталляции StackTracePlus запуск macrotest.lua приводит к сообщению об

Shmuel
Posts: 5229
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Thu 18 Jun, 2015 17:00

John Doe wrote: Чем раньше выбросишь, тем меньше вероятность что кто-то успеет использовать.
Да скорее всего уже успели.
Но можно поставить её "на счётчик" на полгода, а в мануале пометить как deprecated.

Shmuel
Posts: 5229
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Thu 18 Jun, 2015 17:03

sToLp wrote: Однако и после деинсталляции StackTracePlus запуск macrotest.lua приводит к сообщению об ошибке
Поскольку у вас это воспроизводится (а у меня нет), то вам и карты в руки для дальнейшего исследования.

User avatar
John Doe
Бюрократ
Posts: 11395
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Thu 18 Jun, 2015 17:05

sToLp wrote: Однако и после деинсталляции StackTracePlus
StackTracePlus влиял только на то, что вместо вывода сообщения о реальной ошибке сам падал (пытаясь использовать функцию print).
Как починить StackTracePlus указано в его теме.
Shmuel wrote: Но можно поставить её "на счётчик" на полгода
Поддерживаю.

User avatar
sToLp
Posts: 763
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 56 times
Been thanked: 5 times

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

Post by sToLp » Thu 18 Jun, 2015 17:56

Восстановил StackTracePlus по инструкции в его теме.
После этого сообщение от macrotest.lua .

Shmuel
Posts: 5229
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Thu 18 Jun, 2015 18:02

sToLp wrote:Восстановил StackTracePlus по инструкции в его теме.
После этого сообщение от macrotest.lua .
А, это уже ценная информация. Вероятно вы запускаете макротест, имея открытый редактор или вьювер.

User avatar
sToLp
Posts: 763
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 56 times
Been thanked: 5 times

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

Post by sToLp » Thu 18 Jun, 2015 18:22

Shmuel wrote:Вероятно вы запускаете макротест, имея открытый редактор или вьювер.
Да. Редактор.
А вот чисто .

Shmuel
Posts: 5229
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Thu 18 Jun, 2015 18:32

Ага, это уже macrotest надо править. Не учтено, что TypeName (имя типа окна) зависит от текущего языка, о чём упомянуто в Энциклопедии.

User avatar
sToLp
Posts: 763
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 56 times
Been thanked: 5 times

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

Post by sToLp » Fri 19 Jun, 2015 06:13

Обновлённый macrotest выдаёт:

Code: Select all

╔══ LuaMacro ══╗
║ All tests OK ║
╟──────────────╢
║    { OK }    ║
╚══════════════╝
Спасибо!

User avatar
John Doe
Бюрократ
Posts: 11395
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Tue 23 Jun, 2015 15:24

Если ошибка возникает при загрузке макросов, то в сообщении не хватает traceback.

Update: http://bugs.farmanager.com/view.php?id=3013

Shmuel
Posts: 5229
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Tue 23 Jun, 2015 15:32

На мантис.

Post Reply

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