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

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

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

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

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

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

Post by Shmuel » Sun 15 Mar, 2015 15:06

Latest post of the previous page:

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

User avatar
HaRT
Moderator
Posts: 8026
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 99 times

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

Post by HaRT » Wed 20 May, 2015 17:55

Если попытаться через lm:load загрузить макрос с неправильным синтаксисом, то в есть кнопка «Редактировать» — очень удобно.
А вот если допустить ошибку, скажем, в регэкспе, то в ни файла, ни строки, ни такой кнопки уже нет. :(
Сложно ли их туда добавить?
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

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

Post by Shmuel » Wed 20 May, 2015 18:21

HaRT wrote: Сложно ли их туда добавить?
Не сложно, но и не просто. Эта работа была начата и прервана за недостатком времени.

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

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

Post by John Doe » Thu 04 Jun, 2015 12:51

Вызов 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: 5100
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

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

Post by Shmuel » Thu 04 Jun, 2015 13:27

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

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

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

Post by John Doe » Thu 04 Jun, 2015 13:46

Shmuel wrote: У меня после устранения ошибки lm:load нормально всё загружает.
Если ошибка в _macroinit.lua, то не загружает.

iva
Posts: 123
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Ликбез по Lua

Post by iva » Sat 06 Jun, 2015 12:17

Хочу обратиться к параметрам скрипта. Написал скрипт в файле 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: 5100
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

Ликбез по Lua

Post by Shmuel » Sat 06 Jun, 2015 12:28

iva wrote: Подскажите, что я не так делаю.
Вы передаёте скрипту несуществующие глобальные переменные a и b, их значения nil, всё нормально.
Чтобы получить то, что вы хотите, надо передавать a и b, заключёнными в кавычки.

iva
Posts: 123
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Ликбез по Lua

Post by iva » Sat 06 Jun, 2015 12:39

Спасибо. Действительно, все по инструкции. Как это я сглупил.

User avatar
sToLp
Posts: 698
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

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

Post by sToLp » Sun 14 Jun, 2015 10:12

В Фаре (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: 5100
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

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

Post by Shmuel » Sun 14 Jun, 2015 10:48

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

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

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

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

Post by John Doe » Tue 16 Jun, 2015 10:05

luamacro.lua: 222/501
Так и задумано, что переменная status глобальна?

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

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

Post by Shmuel » Tue 16 Jun, 2015 10:42

Спасибо за репорт.

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

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

Post by John Doe » Thu 18 Jun, 2015 12:14

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 вместо нормальных сообщений у меня тоже начала появляться после установки viewtopic.php?f=15&t=9611

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

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

Post by Shmuel » Thu 18 Jun, 2015 12:42

Вы поставили сторонний пакет, который вмешивается в обработку ошибок. Я не знаю в деталях, что этот пакет делает, ставить его специально и разбираться нет времени.

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

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

Post by John Doe » Thu 18 Jun, 2015 12:47

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

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

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

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

Post by Shmuel » Thu 18 Jun, 2015 14:25

John Doe wrote: которая у нас беспардонно переопределена.
Полагаю, что не беспардонно, а вполне осмысленно.

Post Reply

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