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

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 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.
    (Мануал весьма лаконичен, вместо описания функции старого макроязыка приведены ссылки на устаревший раздел )
См. также:
eugene1287
Posts: 41
Joined: Sat 02 Oct, 2010 00:25

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

Post by eugene1287 »

Latest post of the previous page:

Спасибо, теперь понятно!
Macro API, как я понимаю, только с текущим файлом может работать.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

eugene1287 wrote:Macro API, как я понимаю, только с текущим файлом может работать.
Это не так.
Впрочем неважно, раз у вас всё получилось с плагиновым апи.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

А зачем у нас band, bnot, bor, bxor, lshift, rshift дублируются в 3х местах?
Предлагаю удалить из таблицы mf.*
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

Согласен, уберу.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

При использовании Plugin.Call/SyncCall есть проблема, если вызываемый плагин пытается открыть панель.
Например RESearch:
Или старый FTP:
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

RESearch или FTP не должны этого делать, будучи вызваны посредством Plugin.Call.
Согласно API, возвращаемое значение, отличное от 0, 1, -1 может быть интерпретировано как указатель на массив возвращаемых значений, а вовсе не как хэндл панели.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Shmuel wrote:RESearch или FTP не должны этого делать
Т.е. никак нельзя это решить? Кроме как вызывать плагины через Keys"F11 ..."?
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

Решить можно практически всё. Но на всё нужно время.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

А асинхронный вызов тоже опасен (если плагин открывает панель не сразу, а в ответ на какие-то действия пользователя)?
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

Асинхронный не опасен.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

У плагина сейчас есть возможность узнать был ли он вызван синхронно или нет?
Может ли он сам управлять "синхронностью"?
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

Нет.
Нет.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Должно быть несложно передавать плагину хотя бы информацию о том, что использовалось для запуска (Call/SyncCall).
И насколько я понял из мануала, если плагин запущен с помощью Call, и отобразил диалог, то вызов гарантированно получится асинхронным.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

John Doe wrote:И насколько я понял из мануала, если плагин запущен с помощью Call, и отобразил диалог, то вызов гарантированно получится асинхронным.
Да.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

При определённых обстоятельствах LuaMacro в сообщениях об ошибках выводит путь к макрофайлу в неправильной кодировке.

Создать папку "Йцукен_Фывапр" в scripts (или в любой её подпапке).
Создать файл "12345_123456_12345678901234.lua" с текстом "xxx" (содержимое не имеет значения, но должна присутствовать ошибка)
Перезагрузить макросы командой lm:load

Наблюдаем сообщение об ошибке, причём путь почему-то в неверной кодировке:

Code: Select all

╔═════════════════════════════════════ LuaMacro ══════════════════════════════════════╗
║ ...™С†СѓРєРµРЅ_Фывапр\12345_123456_12345678901234.lua:2: '=' expected near '< ║
║ eof>'                                                                               ║
╟─────────────────────────────────────────────────────────────────────────────────────╢
║                                       { OK }                                        ║
╚═════════════════════════════════════════════════════════════════════════════════════╝
Видно, что путь усекается (троеточие), возможно причина сбоя в том, что UTF-8 усекается побайтно, а не посимвольно.

Windows XP, Far 3.0 build 3909 x86, проверялось в новом профиле.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

Это привет от M#2388.
Post Reply

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