Page 28 of 39

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

Posted: Mon 16 Jul, 2012 13:44
by John Doe
Проект Spring (обсуждение) влился в стабильную версию Far Manager 3.0.

Таким образом, в макросах сейчас доступны:
  • Стандартные функции и библиотеки Lua.
  • В фаре используется LuaJIT (обсуждение), что (в частности) даёт доступ к библиотеке FFI (обсуждение).
  • "Надстройка" над Lua: MoonScript (Подробности и обсуждение)
  • Функции API плагинов, посредством библиотеки LuaFAR (см. luafar_manual.chm)
  • Функции старого макроязыка (API макросов) (Обновление)
    Актуальный мануал, отражающий после перехода на Lua: macroapi_manual.ru.chm.
    (Мануал весьма лаконичен, вместо описания функции старого макроязыка приведены ссылки на устаревший раздел )
См. также:

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

Posted: Tue 28 Oct, 2014 14:23
by John Doe

Latest post of the previous page:

Не скажу точно когда началось, но уже некоторое время наблюдаю неприятный эффект: каждое последующее выполнение 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;

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

Posted: Tue 28 Oct, 2014 16:41
by Shmuel
John Doe wrote:Не скажу точно когда началось, но уже некоторое время наблюдаю неприятный эффект: каждое последующее выполнение far.MacroLoadAll() занимает всё больше времени.
У меня аналогичный эффект. Определил виновника - файл Editor_MouseSelect.lua из комплекта SimSU.
Осталось только разобраться, как он умудряется это делать.

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

Posted: Wed 29 Oct, 2014 00:33
by Shmuel
Shmuel wrote:Определил виновника - файл Editor_MouseSelect.lua из комплекта SimSU.
Осталось только разобраться, как он умудряется это делать.
Вроде починил, в плагине LuaMacro.
С файла Editor_MouseSelect.lua все обвинения сняты, он просто содержал (вполне законную) конструкцию типа
pcall(require, "inexistent"), при которой данный эффект проявлялся.

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

Posted: Wed 05 Nov, 2014 12:12
by John Doe
Из окружения макросов не убирается MenuItem/NoMenuItem

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

Posted: Wed 05 Nov, 2014 12:30
by Shmuel
John Doe wrote:Из окружения макросов не убирается MenuItem/NoMenuItem
Спасибо, исправлено.

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

Posted: Fri 09 Jan, 2015 18:14
by Shmuel
Дополнил документацию.

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

Posted: Thu 05 Feb, 2015 11:47
by Shmuel
Полагаю, что сообщения в данной теме, начиная от http://forum.farmanager.com/viewtopic.p ... 49#p127749, имеет смысл перенести сюда.

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

Posted: Tue 17 Feb, 2015 08:13
by John Doe

Code: Select all

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

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

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

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

Posted: Tue 17 Feb, 2015 08:21
by Shmuel
John Doe wrote: Может быть стоит распространить это и на режим 0?
Возможно.
John Doe wrote: Хотя прежде я хотел бы поинтересоваться о предполагаемом назначении этой функциональности.
По аналогии с вызовом функции. Передача информации вызывающей функции из вызываемой.

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

Posted: Tue 17 Feb, 2015 09:24
by John Doe
Shmuel wrote: По аналогии с вызовом функции.
Это да, до луа макросы и были вместо функций, но интересно зачем это может понадобиться сейчас.
Напомню, на мантисе есть конфликтующее пожелание: http://bugs.farmanager.com/view.php?id=2391


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

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

Posted: Sun 15 Mar, 2015 13:01
by DrKnS
assert(rshift(w,64)==0) не работает в x64.

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

Posted: Sun 15 Mar, 2015 15:06
by Shmuel
Спасибо, исправил. (Исправленную версию на x64 не проверял пока, но должно быть нормально).

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

Posted: Wed 20 May, 2015 17:55
by HaRT
Если попытаться через lm:load загрузить макрос с неправильным синтаксисом, то в есть кнопка «Редактировать» — очень удобно.
А вот если допустить ошибку, скажем, в регэкспе, то в ни файла, ни строки, ни такой кнопки уже нет. :(
Сложно ли их туда добавить?

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

Posted: Wed 20 May, 2015 18:21
by Shmuel
HaRT wrote: Сложно ли их туда добавить?
Не сложно, но и не просто. Эта работа была начата и прервана за недостатком времени.

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

Posted: Thu 04 Jun, 2015 12:51
by John Doe
Вызов error() (без параметра) в любом макрофайле приводит при загрузке макросов к такой ошибке:

Code: Select all

╔════════════════════════════════════════════════ Error ════════════════════════════════════════════════╗
║ C:\APPs\Far3\Plugins\LuaMacro\LuaMacro.dll:                                                           ║
║ C:\APPs\Far3\Plugins\LuaMacro\utils.lua:528: attempt to index local 'msg' (a nil value)               ║
║ stack traceback:                                                                                      ║
║    C:\APPs\Far3\Plugins\LuaMacro\utils.lua:528: in function 'ErrMsgLoad'                              ║
║    C:\APPs\Far3\Plugins\LuaMacro\utils.lua:653: in function 'LoadRegularFile'                         ║
║    C:\APPs\Far3\Plugins\LuaMacro\utils.lua:711: in function <C:\APPs\Far3\Plugins\LuaMacro\utils.lua: ║
║ 569>                                                                                                  ║
╟───────────────────────────────────────────────────────────────────────────────────────────────────────╢
║                                                { OK }                                                 ║
╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝
После этого макросы не работают (lm:load не помогает).

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

Posted: Thu 04 Jun, 2015 13:27
by Shmuel
John Doe wrote: После этого макросы не работают (lm:load не помогает).
У меня после устранения ошибки lm:load нормально всё загружает.
Но репорт - валидный, буду смотреть.