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

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
John Doe
Бюрократ
Posts: 13853
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 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: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

Latest post of the previous page:

gotar wrote:Можно ли знатоков lua прокомментировать код [......]

Code: Select all

local env = {Macro=AddMacro} // создать окружение без глобальных переменных, только ф-ция Macro
setfenv(f, env)              // установить это окружение для загруженного макрофайла
AddMacro_filename = FullPath // сделать имя текущего файла видимым из ф-ции AddMacro
local ok, msg = pcall(f)     // запустить макрофайл на исполнение
if ok then                   // если не было ошибок
  env.Macro = nil            // убрать ф-цию Macro из окружения макрофайла
  setmetatable(env, gmeta)   // предоставить макрофайлу доступ к глобальным переменным
else
  ErrMsg(msg)                // выдать сообщение об ошибке
end
User avatar
John Doe
Бюрократ
Posts: 13853
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

Помниться был некий Macro2Lua конвертер, но сейчас его в downloads убрали.
Можно ли ещё раздобыть?

С учётом переезда в макрофайлы хотелось бы на вход давать произвольный файл с текстом макроса, а на выходе получать файл с текстом в lua.
User avatar
ur4ltz
Posts: 76
Joined: Fri 08 Jan, 2010 14:07
Location: Харьков
Has thanked: 1 time

Re: Spring — внедрение Lua в качестве макроязыка

Post by ur4ltz »

John Doe wrote:Помниться был некий Macro2Lua конвертер, но сейчас его в downloads убрали.
Можно ли ещё раздобыть?
Можно. Только он не работает в последних версиях.
http://plugring.farmanager.com/plugin.php?pid=884
John Doe wrote:С учётом переезда в макрофайлы хотелось бы на вход давать произвольный файл с текстом макроса, а на выходе получать файл с текстом в lua.
Да это было бы очень удобно.
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

John Doe wrote:С учётом переезда в макрофайлы хотелось бы на вход давать произвольный файл с текстом макроса, а на выходе получать файл с текстом в lua.
Произвольный файл с текстом макроса можно обработать конвертером, см. хелп конвертера.
User avatar
John Doe
Бюрократ
Posts: 13853
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

Спасибо, то что надо.
Добавил ссылку в шапку темы, и сюда
User avatar
John Doe
Бюрократ
Posts: 13853
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

Вопрос: почему mf.waitkey приводит к перерисовке панели, независимо от режима DisableOutput?

Пример:

Code: Select all

lm:post Keys"CtrlO" win.Sleep(500) Keys"CtrlO"
При запуске мы не увидим моргания панелей, и это ожидаемо.

Но стоит добавить mf.waitkey, и моргание появляется:

Code: Select all

lm:post Keys"CtrlO" mf.waitkey(1) win.Sleep(500) Keys"CtrlO"
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

John Doe wrote:Вопрос: почему mf.waitkey приводит к перерисовке панели, независимо от режима DisableOutput?
Причина известна, заключается в том, что на время вызова плагина LuaMacro Фар разрешает вывод на экран, для того, чтобы, в случае вызова far.Message, far.Menu, диалогов, они появились на экране. Как лечить - примерно ясно, пока руки не доходят. Если нетрудно - на мантис, отдельным тикетом.
User avatar
John Doe
Бюрократ
Posts: 13853
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

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

P.S.
Задумался в какой проект постить: Far Manager или Plugins
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

John Doe wrote:Задумался в какой проект постить: Far Manager или Plugins
Всё правильно, этим управляет Фар, а не плагин.
User avatar
John Doe
Бюрократ
Posts: 13853
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

В любом случае в плагинах нет раздела для LuaMacro
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

Хотел бы посоветоваться по поводу локализации плагина LuaMacro. Вижу пока 2 варианта:
1. Как обычно для плагинов, т.е. lng-файлы в папке плагина.
2. Выделенная непрерывная секция в farlang.templ.m4, с доступом по приватному API.
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by zg »

Shmuel wrote:2. Выделенная непрерывная секция в farlang.templ.m4, с доступом по приватному API.
а в чем смысл?
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

Смысл в том, что "локализаторщики" Фара одновременно локализуют и плагин LuaMacro, который функционально довольно тесно связан с Фаром. Иначе они будут забывать локализовать LuaMacro.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by NightRoman »

shmuel 29.12.2012 15:17:57 +0200 - build 3054
1. 'area' в описании макроса может включать несколько областей, разделённых пробелами/запятыми/точками с запятой.
2. 'key' в описании макроса может включать несколько ключей, разделённых пробелами.
Может, в 1. с одним разделителем будет лучше? (Пробел, раз в 2. пробел).
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

NightRoman wrote:Может, в 1. с одним разделителем будет лучше? (Пробел, раз в 2. пробел).
Может быть, пусть ещё несколько человек выскажется.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by NightRoman »

Но если и не выскажутся, то и 1., и 2. должны пользовать единообразные разделители. Иначе странный дизайн какой-то. А вообще, какой резон для многих разделителей? Или почему не включен разделитель "|", который во флагах принят? Слишком разноцветно всё как-то получается.
Post Reply

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