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

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 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
SUSim
Posts: 1633
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 25 times

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

Post by SUSim »

Ребят! так нельзя принимать решения!
Я даже, не успел спросить зачем mf, и почему именно "mf"

SimSU ··· ·· -- ··· ··-
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

SUSim wrote:Ребят! так нельзя принимать решения!
Я даже, не успел спросить зачем mf, и почему именно "mf"

mf = "macrofunctions"
Вариантов сделать этот API есть бесчисленное множество, и тот, что выбран - не самый худший. А если устроить публичное обсуждение, навряд ли придём к консенсусу. Тем не менее, покуда ещё слом всего не закончен (до конца месяца?), можно и это ломать, наверное. Открывайте отдельную тему, и пусть все желающие высказываются.
User avatar
SUSim
Posts: 1633
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 25 times

Re: Идея о замене макроязыка Фара на Lua, JavaScript и т.п.

Post by SUSim »

Насчет Keys:
как-то нелогично,на мой взгляд, то нужен eval, то Keys - объединить бы их...
SimSU ··· ·· -- ··· ··-
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Идея о замене макроязыка Фара на Lua, JavaScript и т.п.

Post by Shmuel »

SUSim wrote:Насчет Keys:
как-то нелогично,на мой взгляд, то нужен eval, то Keys - объединить бы их...
Это совершенно разные вещи, зачем их объединять?
User avatar
SUSim
Posts: 1633
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 25 times

Re: Идея о замене макроязыка Фара на Lua, JavaScript и т.п.

Post by SUSim »

Почему совершенно разные?
Раньше eval("F1") вызывал помощь, а теперь Keys("F1") делает тоже самое!
eval как-то привычнее, может его разломать=апгрейдить?... пока всё и так ломается...
и всё таки почему некоторы функции в mf., а некоторые напрямую? (тот же print а не mf.print) в чём логика?

кажется не в той теме обсуждение я завёл...
SimSU ··· ·· -- ··· ··-
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Идея о замене макроязыка Фара на Lua, JavaScript и т.п.

Post by Shmuel »

SUSim wrote:Почему совершенно разные?
Раньше eval("F1") вызывал помощь, а теперь Keys("F1") делает тоже самое!
eval как-то привычнее, может его разломать=апгрейдить?... пока всё и так ломается...
То, что было раньше, теперь неважно. eval и Keys не имеют ничего общего. Ломать eval потому, что когда-то раньше он был единственным способом послать клавишу из переменной, а теперь этого уже не надо, поскольку есть специальная ф-ция Keys, было бы весьма странно.
SUSim wrote:и всё таки почему некоторы функции в mf., а некоторые напрямую? (тот же print а не mf.print) в чём логика?
Глобальными ф-циями сделаны наиболее часто употребительные (на мой субъективный взгляд). Делать все функции глобальными = засорять глобальное пространство.
User avatar
SUSim
Posts: 1633
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 25 times

Re: Идея о замене макроязыка Фара на Lua, JavaScript и т.п.

Post by SUSim »

по п.1
eval("Keys(\"F1\")") криво не находите? - подумаю ещё как логичнее (в принципе, меня и так как есть устраивает, я почти все свои макросы перепилил под lua, вот только куда их выкладывать? сюда или в тему макросы???)

по п.2
очень субъективно получилось, приходится задумываться писать, например, msgbox() или mf.msgbox()
может всё сделать, или mf.zzz, или просто zzz (глобальных функций не так уж и много), а еще можно и глобальные функции разделить:
типа user.msgbox, user.prompt, string.len и т.п.

Ламерский вопрос: а можно ли както предобявить библиотеку - чтобы не писать каждый раз имя таблицы,
чтобы math.sin(math.pi) выглядело как sin(Pi) и т.п.
SimSU ··· ·· -- ··· ··-
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Идея о замене макроязыка Фара на Lua, JavaScript и т.п.

Post by Shmuel »

SUSim wrote:по п.1
eval("Keys(\"F1\")") криво не находите? - подумаю ещё как логичнее (в принципе, меня и так как есть устраивает, я почти все свои макросы перепилил под lua, вот только куда их выкладывать? сюда или в тему макросы???)
Зачем eval("Keys(\"F1\")"), почему не просто Keys("F1") ? Может я чего-то не понимаю?
SUSim wrote:по п.2
очень субъективно получилось, приходится задумываться написать, например, msgbox() или mf.msgbox()
может всё сделать, или mf.zzz, или просто zzz (глобальных функций не так уж и много), а еще можно и глобальные функции разделить:
типа user.msgbox, user prompt, string.len и т.п.
Глобальных величин уже полным-полно:
1. Lua API
2. LuaFAR API
3. Macro API

А задумываться - да, придётся, нынешняя система куда шире предыдущей. Можно и в справку поглядывать.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Идея о замене макроязыка Фара на Lua, JavaScript и т.п.

Post by DrKnS »

Shmuel wrote:
SUSim wrote:и всё таки почему некоторы функции в mf., а некоторые напрямую? (тот же print а не mf.print) в чём логика?
Глобальными ф-циями сделаны наиболее часто употребительные (на мой субъективный взгляд). Делать все функции глобальными = засорять глобальное пространство.
Для единообразия лучше все функции сделать доступными через mf., а для наиболее часто встречающихся завести алиасы в глобальном пространстве.

Манипуляции пространствами в стиле "using namespace mf;" или "using mf::print;" в lua есть?
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Идея о замене макроязыка Фара на Lua, JavaScript и т.п.

Post by Shmuel »

DrKnS wrote:Для единообразия лучше все функции сделать доступными через mf., а для наиболее часто встречающихся завести алиасы в глобальном пространстве.
Это хорошая идея.
DrKnS wrote:Манипуляции пространствами в стиле "using namespace mf;" или "using mf::print;" в lua есть?
Есть, но делается через метатаблицы - не стоит на данном этапе, это не для начинающих, сначала пусть люди освоят более простые вещи.

P.S.
"using mf::print;" делается так (в верхней части скрипта, т.е. до первого использования):

Code: Select all

local print=mf.print
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Идея о замене макроязыка Фара на Lua, JavaScript и т.п.

Post by zg »

Shmuel wrote:Зачем eval("Keys(\"F1\")")
eval("Keys('F1')")
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Идея о замене макроязыка Фара на Lua, JavaScript и т.п.

Post by Shmuel »

zg wrote:eval("Keys('F1')")
Дело не в кавычках, мне непонятно, зачем использовать eval, а не просто Keys("F1").
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Идея о замене макроязыка Фара на Lua, JavaScript и т.п.

Post by zg »

Shmuel wrote:Дело не в кавычках, мне непонятно, зачем использовать eval, а не просто Keys("F1").

Code: Select all

local a="Keys('"..(cond and "F1" or "F2").."')"
eval(a)
пример синтетический и вполне вероятно, что на луа любой реальный пример с eval можно переписать без eval.

Примечание модератора: продолжение
User avatar
SUSim
Posts: 1633
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 25 times

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

Post by SUSim »

У вас тут конечно высокие материи :), но у меня вопрос по текущему состоянию.
в хелпе сказано:

Code: Select all

Editor - таблица со следующими полями:
Свойства:
  CurLine:   number
  ...
Функции:
  DelLine
  ...
так вот при

Code: Select all

s=""; 
for k,v in pairs(Editor) do 
  s=s..k.."\n"; 
end;
в s у меня попадают только фунуции, а что Свойства полями не являются? или я что-то не так делаю? (pairs(_G) есть и свойства и функции и библиотеки-таблицы)
SimSU ··· ·· -- ··· ··-
Post Reply

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