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

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
John Doe
Бюрократ
Posts: 13855
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.
    (Мануал весьма лаконичен, вместо описания функции старого макроязыка приведены ссылки на устаревший раздел )
См. также:
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 »

Latest post of the previous page:

Я не понимаю тебя. У меня появилось подозрение, что добавляется лишняя фича. Возможно, потому что я малограмотен в вопросе. Поэтому и спрашивал. Но я и поделился беспокойством. Раз не лишняя фича, все хорошо. Что я не понимаю, это не важно. Я и говорил - автору видней. В любом случае, я не скандалить приходил, а для пользы дела. Если не получилось... ну увы. Сердиться не надо.
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

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

Post by SUSim »

А мне кажется, это совсем не лишняя фича, тем более о подобном давно просили (зачем-то в базе ведь заложены functions).
Shmuel предложил более универсальный и общий подход, надо пробовать - сказано же экспериментально...
Я, точно, буду этим пользоваться, как только разберусь...
SimSU ··· ·· -- ··· ··-
2useven10
Posts: 5231
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

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

Post by 2useven10 »

а к чему эта мимикрия ?
если в сарае дрова, то так и надо писать (modules).
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

2useven10 wrote:а к чему эта мимикрия ?
если в сарае дрова, то так и надо писать (modules).
Знал, что такой вопрос будет. Если есть желание поправить, пожалуйста.
User avatar
DAtaMan
Posts: 262
Joined: Wed 24 Jun, 2009 10:01
Location: не отсюда

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

Post by DAtaMan »

2useven10 wrote:если в сарае дрова, то так и надо писать (modules).
А ещё непонятно, почему глобальные переменные со значениями хранятся в базе настроек LuaMacro, а не в macros.db/variables
То есть теперь, всё, что касается макросов, разбито по нескольким файлам. Неинтуитивно.
2B OR NOT 2B = FF (Иногда code - это просто код. Почти Дйерф Омолш Днумзигис)
To ban or not to ban, that is the question. ©
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 »

DAtaMan
Это вроде не так. Смотри пример одной такой переменной несколькими постами выше. Она задается в секции конфига Фара, а не LuaMacro.
User avatar
DAtaMan
Posts: 262
Joined: Wed 24 Jun, 2009 10:01
Location: не отсюда

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

Post by DAtaMan »

NightRoman wrote:DAtaMan
Это вроде не так.
Ага, вроде. :)
Достаточно выполнить mf.msave("Far", "UpTime", Far.UpTime) и посмотреть, куда сохранилось.
2B OR NOT 2B = FF (Иногда code - это просто код. Почти Дйерф Омолш Днумзигис)
To ban or not to ban, that is the question. ©
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 »

Так это может разные вещи?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

То, что msave "не туда сохраняет", уже упоминалось, может, даже не раз.
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

NightRoman wrote:То, что msave "не туда сохраняет", уже упоминалось, может, даже не раз.
Есть и инц на мантисе по этому поводу.
Это, конечно, непорядок, но не такой уж страшный, ибо всё работает. Да, переносимость, нужно переносить 2 db-файла вместо одного. Хотя, если делать far /export, то всё и так перенесётся.

Это пока не исправляется, поскольку у меня недостаточно мотивации ради этого изучить довольно большой кусок кода, связанный с базами. Но не исключено, что подключится кто-нибудь, уже знающий этот код, и поправит.
gotar
Posts: 420
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

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

Post by gotar »

Мне бы хотелось разобраться как работает luamacro.lua.


Можно ли знатоков lua прокомментировать код

Code: Select all

        local env = {Macro=AddMacro}
        setfenv(f, env)
        AddMacro_filename = FullPath
        local ok, msg = pcall(f)
        if ok then
          env.Macro = nil
          setmetatable(env, gmeta)
        else
          ErrMsg(msg)
        end
при вызове far.RecursiveSearch.
Я не понимаю как он работает. А это центральное место при чтении macro файлов.
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

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: 13855
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: 6836
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: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Спасибо, то что надо.
Добавил ссылку в шапку темы, и сюда
Post Reply

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