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

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

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

Postby 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.
    (Мануал весьма лаконичен, вместо описания функции старого макроязыка приведены ссылки на устаревший раздел )

См. также:
Last edited by John Doe on Fri 26 Aug, 2016 16:56, edited 3 times in total.

User avatar
SUSim
Posts: 1471
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 4 times
Been thanked: 3 times

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

Postby SUSim » Mon 01 Oct, 2012 20:19

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

SimSU ··· ·· -- ··· ··-

Shmuel
Posts: 4909
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 118 times

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

Postby Shmuel » Mon 01 Oct, 2012 20:55

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


mf = "macrofunctions"
Вариантов сделать этот API есть бесчисленное множество, и тот, что выбран - не самый худший. А если устроить публичное обсуждение, навряд ли придём к консенсусу. Тем не менее, покуда ещё слом всего не закончен (до конца месяца?), можно и это ломать, наверное. Открывайте отдельную тему, и пусть все желающие высказываются.

User avatar
SUSim
Posts: 1471
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 4 times
Been thanked: 3 times

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

Postby SUSim » Thu 04 Oct, 2012 19:25

Насчет Keys:
как-то нелогично,на мой взгляд, то нужен eval, то Keys - объединить бы их...
SimSU ··· ·· -- ··· ··-

Shmuel
Posts: 4909
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 118 times

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

Postby Shmuel » Thu 04 Oct, 2012 19:36

SUSim wrote:Насчет Keys:
как-то нелогично,на мой взгляд, то нужен eval, то Keys - объединить бы их...

Это совершенно разные вещи, зачем их объединять?

User avatar
SUSim
Posts: 1471
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 4 times
Been thanked: 3 times

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

Postby SUSim » Thu 04 Oct, 2012 20:04

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

кажется не в той теме обсуждение я завёл...
SimSU ··· ·· -- ··· ··-

Shmuel
Posts: 4909
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 118 times

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

Postby Shmuel » Thu 04 Oct, 2012 20:16

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

То, что было раньше, теперь неважно. eval и Keys не имеют ничего общего. Ломать eval потому, что когда-то раньше он был единственным способом послать клавишу из переменной, а теперь этого уже не надо, поскольку есть специальная ф-ция Keys, было бы весьма странно.

SUSim wrote:и всё таки почему некоторы функции в mf., а некоторые напрямую? (тот же print а не mf.print) в чём логика?

Глобальными ф-циями сделаны наиболее часто употребительные (на мой субъективный взгляд). Делать все функции глобальными = засорять глобальное пространство.

User avatar
SUSim
Posts: 1471
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 4 times
Been thanked: 3 times

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

Postby SUSim » Thu 04 Oct, 2012 20:46

по п.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: 4909
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 118 times

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

Postby Shmuel » Thu 04 Oct, 2012 20:56

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: 4434
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 101 times
Contact:

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

Postby DrKnS » Thu 04 Oct, 2012 21:42

Shmuel wrote:
SUSim wrote:и всё таки почему некоторы функции в mf., а некоторые напрямую? (тот же print а не mf.print) в чём логика?

Глобальными ф-циями сделаны наиболее часто употребительные (на мой субъективный взгляд). Делать все функции глобальными = засорять глобальное пространство.


Для единообразия лучше все функции сделать доступными через mf., а для наиболее часто встречающихся завести алиасы в глобальном пространстве.

Манипуляции пространствами в стиле "using namespace mf;" или "using mf::print;" в lua есть?

Shmuel
Posts: 4909
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 118 times

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

Postby Shmuel » Thu 04 Oct, 2012 21:55

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: 5187
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 40 times
Contact:

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

Postby zg » Fri 05 Oct, 2012 00:38

Shmuel wrote:Зачем eval("Keys(\"F1\")")
eval("Keys('F1')")

Shmuel
Posts: 4909
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 118 times

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

Postby Shmuel » Fri 05 Oct, 2012 01:05

zg wrote:eval("Keys('F1')")

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

User avatar
zg
zero-gravity
Posts: 5187
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 40 times
Contact:

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

Postby zg » Fri 05 Oct, 2012 01:47

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

Code: Select all

local a="Keys('"..(cond and "F1" or "F2").."')"
eval(a)

пример синтетический и вполне вероятно, что на луа любой реальный пример с eval можно переписать без eval.

Примечание модератора: продолжение

User avatar
SUSim
Posts: 1471
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 4 times
Been thanked: 3 times

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

Postby SUSim » Mon 08 Oct, 2012 16:25

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

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 ··· ·· -- ··· ··-

Shmuel
Posts: 4909
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 118 times

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

Postby Shmuel » Mon 08 Oct, 2012 16:56

SUSim wrote:в s у меня попадают только фунуции, а что Свойства полями не являются? или я что-то не так делаю? (pairs(_G) есть и свойства и функции и библиотеки-таблицы)

Ты всё делаешь так, просто эти свойства сделаны сейчас недоступны для получения. Надо будет сделать доступными.


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

Who is online

Users browsing this forum: No registered users and 1 guest