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

Здесь обсуждается всё, что касается макросов.
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.
    (Мануал весьма лаконичен, вместо описания функции старого макроязыка приведены ссылки на устаревший раздел )
См. также:
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

Latest post of the previous page:

Спасибо, исправил. (Исправленную версию на x64 не проверял пока, но должно быть нормально).
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

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

Post by HaRT »

Если попытаться через lm:load загрузить макрос с неправильным синтаксисом, то в есть кнопка «Редактировать» — очень удобно.
А вот если допустить ошибку, скажем, в регэкспе, то в ни файла, ни строки, ни такой кнопки уже нет. :(
Сложно ли их туда добавить?
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

HaRT wrote: Сложно ли их туда добавить?
Не сложно, но и не просто. Эта работа была начата и прервана за недостатком времени.
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 »

Вызов 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 не помогает).
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

John Doe wrote: После этого макросы не работают (lm:load не помогает).
У меня после устранения ошибки lm:load нормально всё загружает.
Но репорт - валидный, буду смотреть.
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 »

Shmuel wrote: У меня после устранения ошибки lm:load нормально всё загружает.
Если ошибка в _macroinit.lua, то не загружает.
iva
Posts: 128
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Ликбез по Lua

Post by iva »

Хочу обратиться к параметрам скрипта. Написал скрипт в файле param.lua следующего содержания

Code: Select all

local arg1, arg2 = ...
local narg = select("#",...)
far.Show(narg, arg1, arg2)
Запускаю командой lua: @param.lua a,b
Получаю 2, nil, nil
Подскажите, что я не так делаю.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Ликбез по Lua

Post by Shmuel »

iva wrote: Подскажите, что я не так делаю.
Вы передаёте скрипту несуществующие глобальные переменные a и b, их значения nil, всё нормально.
Чтобы получить то, что вы хотите, надо передавать a и b, заключёнными в кавычки.
iva
Posts: 128
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Ликбез по Lua

Post by iva »

Спасибо. Действительно, все по инструкции. Как это я сглупил.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

В Фаре (3.0.4391 x86) с единственным плагином LuaMacro.dll и ранее установленными макросами запускаю макрос macrotest.lua и получаю картинку:

Code: Select all

╔══════════════════ Error ══════════════════╗
║ U:\FarLce\pluginsN\luamacro\LuaMacro.dll: ║
║ error in error handling                   ║
╟───────────────────────────────────────────╢
║                  { OK }                   ║
╚═══════════════════════════════════════════╝
После неё в левом верхнем углу панелей Фара остаётся висеть значок 'P' на зелёном фоне. При этом Фар работает как будто бы значка и нет.

Когда же я в \Profile\Macros\scripts\ оставляю единственным только макрос-пускач macrotest(Shmuel)tst-she.lua для запуска macrotest.lua, то при его запуске попеременно с нерегулярной последовательностью наблюдаю следующие картинки:

Code: Select all

╔═════════════════════════════ LuaMacro ═════════════════════════════╗
║ U:\FarLce\pluginsN\luamacro\macrotest.lua:204: assertion failed!   ║
║ stack traceback:                                                   ║
║    [C]: in function 'assert'                                       ║
║    U:\FarLce\pluginsN\luamacro\macrotest.lua:204: in function      ║
║ 'test_clip'                                                        ║
║    U:\FarLce\pluginsN\luamacro\macrotest.lua:603: in function      ║
║ 'test_mf'                                                          ║
║    U:\FarLce\pluginsN\luamacro\macrotest.lua:1625: in function     ║
║ 'test_all'                                                         ║
║    ...rLce\Profile\Macros\scripts\macrotest(Shmuel)tst-she.lua:13: ║
║  in function <...rLce\Profile\Macros\scripts\macrotest(Shmuel)tst- ║
║ she.lua:11>                                                        ║
╟────────────────────────────────────────────────────────────────────╢
║                               { OK }                               ║
╚════════════════════════════════════════════════════════════════════╝

╔═════════════════════════════ LuaMacro ═════════════════════════════╗
║ U:\FarLce\pluginsN\luamacro\macrotest.lua:1404: assertion failed!  ║
║ stack traceback:                                                   ║
║    [C]: in function 'assert'                                       ║
║    U:\FarLce\pluginsN\luamacro\macrotest.lua:1404: in function     ║
║ 'test_AdvControl_Window'                                           ║
║    U:\FarLce\pluginsN\luamacro\macrotest.lua:1495: in function     ║
║ 'test_AdvControl'                                                  ║
║    U:\FarLce\pluginsN\luamacro\macrotest.lua:1582: in function     ║
║ 'test_luafar'                                                      ║
║    U:\FarLce\pluginsN\luamacro\macrotest.lua:1638: in function     ║
║ 'test_all'                                                         ║
║    ...rLce\Profile\Macros\scripts\macrotest(Shmuel)tst-she.lua:13: ║
║  in function <...rLce\Profile\Macros\scripts\macrotest(Shmuel)tst- ║
║ she.lua:11>                                                        ║
╟────────────────────────────────────────────────────────────────────╢
║                               { OK }                               ║
╚════════════════════════════════════════════════════════════════════╝
Значок 'P' после них не остаётся.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

К сожалению, у меня ничего из этого не воспроизводится.

Да, тест клипборда может выдавать ошибку, если запущена какая-либо аппликация, "мониторящая" клипборд. У меня есть такие аппликации, и этот эффект мне давно известен, хотя исследовать его поглубже руки не доходят.
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 »

luamacro.lua: 222/501
Так и задумано, что переменная status глобальна?
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

Спасибо за репорт.
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 »

sToLp wrote:В Фаре (3.0.4391 x86) с единственным плагином LuaMacro.dll и ранее установленными макросами запускаю макрос macrotest.lua и получаю картинку:

Code: Select all

╔══════════════════ Error ══════════════════╗
║ U:\FarLce\pluginsN\luamacro\LuaMacro.dll: ║
║ error in error handling                   ║
╟───────────────────────────────────────────╢
║                  { OK }                   ║
╚═══════════════════════════════════════════╝
После неё в левом верхнем углу панелей Фара остаётся висеть значок 'P' на зелёном фоне.
Про macrotest.lua ничего не скажу, но error in error handling вместо нормальных сообщений у меня тоже начала появляться после установки http://forum.farmanager.com/viewtopic.php?f=15&t=9611
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

Вы поставили сторонний пакет, который вмешивается в обработку ошибок. Я не знаю в деталях, что этот пакет делает, ставить его специально и разбираться нет времени.
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 »

К luamacro претензий нет, я лишь предположил причину странного сообщения у sToLp.

Update
Причина сбоя в том, что модуль пытается использовать функцию print, которая у нас беспардонно переопределена.
(Как обойти проблему описал в первом посте соответствующей темы)
Post Reply

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