Менеджер Lua-скриптов для Farа

Здесь выкладываются готовые к использованию макросы и скрипты.
Post Reply
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Менеджер Lua-скриптов для Farа

Post by IgorZ »

Выводит список всех Lua-скриптов Farа и позволяет манипулировать ими.









Требуемая версия Far 3.0.5210+.

Начиная с версии 4.0, скрипт выполнен в виде модуля и набора вызывающих макросов.

Attachments
LuaManager.6.0.2.7z
Версия для Far 3.0.0.5934+
(65.47 KiB) Downloaded 88 times
LuaManager.5.2.0.7z
Версия для Far 3.0.0.5210+
(58.78 KiB) Downloaded 219 times
LuaManager.5.0.6.7z
Последняя опубликованная версия, поддерживающая Far 3.0.0.4000 и выше
(59.02 KiB) Downloaded 351 times
LuaManager.3.1.11.7z
Последняя версия, выполненная не в виде модуля
(50.56 KiB) Downloaded 515 times
Last edited by IgorZ on Wed 25 Oct, 2023 10:02, edited 24 times in total.
tstr
Posts: 557
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 20 times
Been thanked: 9 times

Re: Менеджер Lua-скриптов для Fara

Post by tstr »

Latest post of the previous page:

Shmuel wrote:Попробуйте два скрипта

Code: Select all

lm:post ("%999s"):format"a" msgbox"ok"

Code: Select all

lm:post ("%1000s"):format"a" msgbox"ok"
В первом случае должно быть ок, во втором - ошибка.
именно так.
Shmuel wrote:Если у вас не так, значит luafar3.dll - левая.
Если так - сабж виноват.
таки не сабж.
в моём случае заполняем формат значениями key_w =107, desc_w =99, ошибка возникает, при precision более двух чисел,
напр.

Code: Select all

lm:post ("%999.101s"):format"a" msgbox"ok"
- ошибка,

Code: Select all

lm:post ("%999.99s"):format"a" msgbox"ok"
- без ошибки.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Менеджер Lua-скриптов для Fara

Post by Shmuel »

tstr wrote: таки не сабж.
в моём случае заполняем формат значениями key_w =107, desc_w =99, ошибка возникает, при precision более двух чисел,
напр.

Code: Select all

lm:post ("%999.101s"):format"a" msgbox"ok"
- ошибка
Ну так объясните, зачем здесь precision 101.
Обработка precision в luafar3.dll не менялась (и не будет меняться, скорее всего).
tstr
Posts: 557
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 20 times
Been thanked: 9 times

Re: Менеджер Lua-скриптов для Fara

Post by tstr »

Shmuel wrote:
tstr wrote: таки не сабж.
в моём случае заполняем формат значениями key_w =107, desc_w =99, ошибка возникает, при precision более двух чисел,
напр.

Code: Select all

lm:post ("%999.101s"):format"a" msgbox"ok"
- ошибка
Ну так объясните, зачем здесь precision 101.
теперь понятен источник ошибки, благодарю за помощь. а за реализацию - лучше у автора объяснений попросить.
(речь, уточню, идёт о

Code: Select all

items[#items].text = (" %s %s │ %-"..key_w.."."..key_w.."s%s│ %-"..desc_w.."."..desc_w.."s%s"):format(...
)
Обработка precision в luafar3.dll не менялась (и не будет меняться, скорее всего).
я уверен что вы или приняли, или примете взвешенное решение. ;)
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Менеджер Lua-скриптов для Fara

Post by Shmuel »

Если добавить макрос

Code: Select all

lm:post far.MacroAdd ("MACROAREA_SHELL", nil, "CtrlF3", "msgbox('added on the fly')")
запустить LuaManager1.0.3 и нажать F4 на данном макросе, получим ошибку:

Code: Select all

...LuaManager1.0.3.lua:477:attempt to index local 'hfile' (a nil value)
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Менеджер Lua-скриптов для Fara

Post by DrKnS »

А почему при отсутствии description не работают F3 и F4?

F3:
LuaManager1.0.3.lua:162: attempt to index a nil value
stack traceback:
LuaManager1.0.3.lua:162: in function 'ShowInfo'
LuaManager1.0.3.lua:967: in function <LuaManager1.0.3.lua:837>
F4:
Macro id=4 is not found. May be area or key is nonstandard set
xarx
Posts: 125
Joined: Tue 23 Nov, 2010 12:06

Re: Lua Менеджер ломает код

Post by xarx »

Lua Manager 1.0.3 ломает строки (string) содержащие "--". Например такой код

Code: Select all

  action = function()
    msg = "\n----- abc -----\n"..
      "c--df\n"
  end;
}
изменяет на

Code: Select all

  action = function()
    msg = "\n
      "c
  end
После сохранения сломанный и файл.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Re: Менеджер Lua-скриптов для Fara

Post by IgorZ »

После долгой творческой комы, вызванной совокупностью объективных и субъективных факторов, возвращаюсь и выкладываю новую версию. Изменений накопилось много, так что прошу тестировать потщательнее. Подробности, как всегда, в заглавном посте темы.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Менеджер Lua-скриптов для Fara

Post by Shmuel »

IgorZ wrote:Изменений накопилось много, так что прошу тестировать потщательнее.
Ну, те проблемы, что я раньше рапортовал, так и не исправлены:
1. http://forum.farmanager.com/viewtopic.p ... 68#p109168
2. http://forum.farmanager.com/viewtopic.p ... 29#p109229

До кучи: нажатие F3 на макросе приводит к ошибке, если у макроса не определена функция condition:
...LuaManager.lua:238: bad argument #1 to 'getinfo' (function or level expected)
Игорь Юдинцев
Posts: 726
Joined: Sun 03 Apr, 2005 22:00
Location: Казань
Been thanked: 2 times

Re: Менеджер Lua-скриптов для Fara

Post by Игорь Юдинцев »

invalid format по-прежнему на месте, build 3683, Lua Manager 1.2.1.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Re: Менеджер Lua-скриптов для Fara

Post by IgorZ »

Новая версия в первом посте.
Shmuel wrote:Области и группы в LuaMacro - регистроНЕзависимые.
Можно указать area="eDiTor" или group="eXitFaR", и будет нормально работать.
Теперь должно работать.
Shmuel wrote:Если добавить макрос

Code: Select all

lm:post far.MacroAdd ("MACROAREA_SHELL", nil, "CtrlF3", "msgbox('added on the fly')")
запустить LuaManager1.0.3 и нажать F4 на данном макросе, получим ошибку:

Code: Select all

...LuaManager1.0.3.lua:477:attempt to index local 'hfile' (a nil value)
Учёл ввариант с временными макросами. Кстати, вопрос: без файла может быть только клавиатурный макрос? А то я на всякий случай учинил глобальный контроль для всех видов макросов и событий, возможно, зря.
Shmuel wrote:До кучи: нажатие F3 на макросе приводит к ошибке, если у макроса не определена функция condition:
...LuaManager.lua:238: bad argument #1 to 'getinfo' (function or level expected)
Досадная опечатка. Вместо item.action было обращение к item.condition. Исправлено.
Игорь Юдинцев wrote:invalid format по-прежнему на месте, build 3683, Lua Manager 1.2.1.
Вроде, поправил. Проблема в том, что конструкция %N.Ns вызывает ошибку, если N>=100. То есть, %999.99s ещё работает, а %999.100s уже слетает.

Да и вообще, format ведёт себя странно. К примеру:
В первом варианте format всё делает правильно: обрезает выводимое значение до максимальной ширины, и дополняет до указанной ширины поля пробелами. В третьем тоже, как ему и сказали, просто обрезает до максимального ограничения. А вот во втором короткую строку дополняет пробелами, как ему и положено, а длинную - нет, хотя должен. Сижу вот, смотрю на это чудо и думаю: то ли я чего-то недопонял, то ли в консерватории непорядок. Не хотелось бы переписывать этот код без format-а, но, возможно, придётся.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Re: Менеджер Lua-скриптов для Fara

Post by IgorZ »

Сейчас проверил одно подозрение. И точно:
С 99 символами ещё работает нормально, а со 100 уже глючит.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Менеджер Lua-скриптов для Fara

Post by Shmuel »

IgorZ wrote:Кстати, вопрос: без файла может быть только клавиатурный макрос?
1. клавиатурный (созданный, но ещё не сохранённый)
2. добавленный с помощью far.MacroAdd (и вообще MCTL_ADDMACRO)
3. загруженный из файла, но файл был переименован или удалён после загрузки
IgorZ wrote:Сейчас проверил одно подозрение.
[......]
С 99 символами ещё работает нормально, а со 100 уже глючит.
Спасибо за репорт, исправлено.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Re: Менеджер Lua-скриптов для Fara

Post by IgorZ »

Версия 1.2.3 - Исправлена ошибка в преобразовании списка областей в короткий вид, сделан фильтр по нажатию клавиши, в просмотре окружения для condition и action разделены, т. к. теоретически могут быть разные.

Насчёт фильтра по клавишам. Такой вариант оптимален, или нужен строгий именно по нажатой клавише?

Замечено несоответствие. В luafar_manual для far.Menu написано:
Item, Position = far.Menu (Properties, Items [, BreakKeys])

Properties: table
fields of Properties (every field is optional):
...
Id: string (GUID)
На самом деле, Id = win.UUid(string_guid).
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Менеджер Lua-скриптов для Fara

Post by Shmuel »

IgorZ wrote:Замечено несоответствие. В luafar_manual для far.Menu написано:
Id: string (GUID)
На самом деле, Id = win.UUid(string_guid).
Поле Id - на самом деле string и на самом деле GUID. Всё соответствует.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Re: Менеджер Lua-скриптов для Fara

Post by IgorZ »

Вот простой макрос для проверки.
  1. local Guid = "CED3FF32-DCD6-43AD-87B1-E2F8117F440D"
  2.  
  3. local items = {{text="111"},{text="222"}}
  4.  
  5.  
  6.  
  7. Macro{
  8.  
  9.   area="Menu"; key="Alt3";
  10.  
  11.   description="Просмотр GUID меню";
  12.  
  13.   action=function() far.Show(Menu.Id) end;
  14.  
  15. }
  16.  
  17.  
  18.  
  19. Macro{
  20.  
  21.   area="Common"; key="Alt1";
  22.  
  23.   description="Меню со строчным GIUD";
  24.  
  25.   action=function() far.Menu({Title="Строка",Id=Guid},items) end;
  26.  
  27. }
  28.  
  29.  
  30.  
  31. Macro{
  32.  
  33.   area="Common"; key="Alt2";
  34.  
  35.   description="Меню с GIUD";
  36.  
  37.   action=function() far.Menu({Title="GUID",Id=win.Uuid(Guid)},items) end;
  38.  
  39. }
Alt1, Alt3 - Menu.Id выдаёт строку нулей. Alt2, Alt3 - Menu.Id выдаёт заданный GUID. Хотя, согласно документации, должен работать именно первый вариант.
2useven10
Posts: 5209
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Re: Менеджер Lua-скриптов для Fara

Post by 2useven10 »

win.Uuid(Guid) делает из одной строки другую (шестнадцатибайтовую).
так что формально в документации всё корректно.
Post Reply

Return to “Полезные макросы и скрипты”