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

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 11048
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 10 times
Been thanked: 63 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
John Doe
Бюрократ
Posts: 11048
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 10 times
Been thanked: 63 times

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

Postby John Doe » Thu 14 Aug, 2014 20:59

Latest post of the previous page:

_macroinit.lua wrote:
  1. mf.postmacro(far.Message,"posted")
  2. far.Message"1"
  3. far.Message"2"

P.S.
Вместо mf.postmacro пробовал и far.Timer, с тем же успехом (есть и на мантисе).

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

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

Postby Shmuel » Thu 14 Aug, 2014 22:04

_macroinit.lua wrote:
  1. mf.postmacro(far.Message,"posted")
  2. far.Message"1"
  3. far.Message"2"

Исправлено.

User avatar
John Doe
Бюрократ
Posts: 11048
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 10 times
Been thanked: 63 times

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

Postby John Doe » Fri 22 Aug, 2014 21:16

Code: Select all

mf.usermenu (mode, filename)
...
- mode может содержать бит 0x100, в этом случае функция возвращается
    только по закрытии пользовательского меню (синхронный вызов).

lua:mf.usermenu(0x100)— и ничего не происходит

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

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

Postby Shmuel » Sat 23 Aug, 2014 07:57

John Doe wrote:lua:mf.usermenu(0x100)— и ничего не происходит

Исправлено.

User avatar
John Doe
Бюрократ
Posts: 11048
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 10 times
Been thanked: 63 times

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

Postby John Doe » Tue 28 Oct, 2014 13:09

Сложно ли функциям akey и waitkey добавить возможность возвращать INPUT_RECORD?

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

User avatar
John Doe
Бюрократ
Posts: 11048
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 10 times
Been thanked: 63 times

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

Postby John Doe » Tue 28 Oct, 2014 14:23

Не скажу точно когда началось, но уже некоторое время наблюдаю неприятный эффект: каждое последующее выполнение far.MacroLoadAll() занимает всё больше времени.
Можно проверить таким скриптом:

Code: Select all

local max = 50
far.Message("  ...  ","","","")
for i=1,max do
  local start = Far.UpTime
  far.MacroLoadAll()
  local delay = Far.UpTime-start
  far.Message(i..":"..delay,"","","k")
  --if delay<500 then win.Sleep(500 - delay) end
end
far.AdvControl"ACTL_REDRAWALL"

В результате время перезагрузки макросов может достигать абсолютно неприемлемых значений (даже не секунды, а десятки секунд)

Перезагрузка плагина (временно) спасает: lua:_G.RecreateLuaState = true;

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

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

Postby Shmuel » Tue 28 Oct, 2014 16:41

John Doe wrote:Не скажу точно когда началось, но уже некоторое время наблюдаю неприятный эффект: каждое последующее выполнение far.MacroLoadAll() занимает всё больше времени.

У меня аналогичный эффект. Определил виновника - файл Editor_MouseSelect.lua из комплекта SimSU.
Осталось только разобраться, как он умудряется это делать.

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

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

Postby Shmuel » Wed 29 Oct, 2014 00:33

Shmuel wrote:Определил виновника - файл Editor_MouseSelect.lua из комплекта SimSU.
Осталось только разобраться, как он умудряется это делать.

Вроде починил, в плагине LuaMacro.
С файла Editor_MouseSelect.lua все обвинения сняты, он просто содержал (вполне законную) конструкцию типа
pcall(require, "inexistent"), при которой данный эффект проявлялся.

User avatar
John Doe
Бюрократ
Posts: 11048
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 10 times
Been thanked: 63 times

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

Postby John Doe » Wed 05 Nov, 2014 12:12

Из окружения макросов не убирается MenuItem/NoMenuItem

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

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

Postby Shmuel » Wed 05 Nov, 2014 12:30

John Doe wrote:Из окружения макросов не убирается MenuItem/NoMenuItem

Спасибо, исправлено.

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

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

Postby Shmuel » Fri 09 Jan, 2015 18:14

Дополнил документацию.

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

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

Postby Shmuel » Thu 05 Feb, 2015 11:47

Полагаю, что сообщения в данной теме, начиная от John Doe @ Чинить надо Find File, имеет смысл перенести сюда.

User avatar
John Doe
Бюрократ
Posts: 11048
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 10 times
Been thanked: 63 times

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

Postby John Doe » Tue 17 Feb, 2015 08:13

Code: Select all

shmuel 17.02.2015 00:44:37 +0200 - build 484

1. Расширение API в области возвращаемых значений для eval(S,2).
0 (нормальный возврат) : дополняется значениями, возвращаемыми “запускаемым” макросом.
Может быть стоит распространить это и на режим 0?

Хотя прежде я хотел бы поинтересоваться о предполагаемом назначении этой функциональности.

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

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

Postby Shmuel » Tue 17 Feb, 2015 08:21

John Doe wrote:Source of the post Может быть стоит распространить это и на режим 0?
Возможно.
John Doe wrote:Source of the post Хотя прежде я хотел бы поинтересоваться о предполагаемом назначении этой функциональности.
По аналогии с вызовом функции. Передача информации вызывающей функции из вызываемой.

User avatar
John Doe
Бюрократ
Posts: 11048
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 10 times
Been thanked: 63 times

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

Postby John Doe » Tue 17 Feb, 2015 09:24

Shmuel wrote:Source of the post По аналогии с вызовом функции.
Это да, до луа макросы и были вместо функций, но интересно зачем это может понадобиться сейчас.
Напомню, на мантисе есть конфликтующее пожелание: http://bugs.farmanager.com/view.php?id=2391


P.S.
Если рассматривать макросы как функции, то надо им и параметры передавать.
Правда и на этот счёт есть "конфликтующее" пожелание: http://bugs.farmanager.com/view.php?id=2310

User avatar
DrKnS
Posts: 4504
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 112 times
Contact:

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

Postby DrKnS » Sun 15 Mar, 2015 13:01

assert(rshift(w,64)==0) не работает в x64.

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

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

Postby Shmuel » Sun 15 Mar, 2015 15:06

Спасибо, исправил. (Исправленную версию на x64 не проверял пока, но должно быть нормально).


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

Who is online

Users browsing this forum: No registered users and 1 guest