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

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

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

Post by IgorZ »

Latest post of the previous page:

Версия 3.1.3 - При редактировании скрипта из файла можно выбрать любой из имеющихся. Текущий (если есть под курсором в редакторе) - под курсором в меню. Отдельный макрос для редактирования именно текущего делать не стал, ибо сомневаюсь в нужности. Для Macro и Event uid формируется всегда, независимо от наличия rebind. Пора бы уже, наверное, легализовать поле uid, сделав обязательным - это намёк Shmuel;). Добавлена справка по диалогам редактирования, краткая. Рефакторинг - глюков не обещаю, но не исключаю.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

  • С фильтрами не всё хорошо.
    Нажал CtrlK, установил фильтр на любую клавишу (например F1), открыл настройки и нажал Enter чтобы сохранить.
    Вернулся в список макросов. Пытаюсь оттуда сбросить фильтр (CtrlAltK), но это не работает: нажатие CtrlAltK не сбрасывает фильтр, а возвращает его к "F1".

    Ок, допустим, пробую дальше. Жму CtrlK, и устанавливаю фильтр на F2, открываю настройки (вижу там F2) и сохраняю их нажатием Enter.
    Возвращаюсь в список макросов, и снова пытаюсь сбросить фильтр (CtrlAltK). И происходит совсем уж странное: фильтр устанавливается в "F1".
  • В диалоге конфигурации метка "key" снабжена хоткеем "k", но нажатие AltK вместо ожидаемого перехода в поле выполняет совсем другое действие - переключает чекбокс [ ] Keyboard
  • Сейчас информацию о версии LuaManager можно увидеть только в исходнике.
    Предлагаю добавить в диалог конфигурации, или справку.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

John Doe wrote:
  • С фильтрами не всё хорошо.
    Нажал CtrlK, установил фильтр на любую клавишу (например F1), открыл настройки и нажал Enter чтобы сохранить.
    Вернулся в список макросов. Пытаюсь оттуда сбросить фильтр (CtrlAltK), но это не работает: нажатие CtrlAltK не сбрасывает фильтр, а возвращает его к "F1".
Так задумано. Все фильтры сбрасываются на сохранённые в БД. Возможно, это неоднозначно идеологически (тут, на мой взгляд, нельзя сказать определённо, так что аргументы принимаются), но не ошибка.
John Doe wrote:Ок, допустим, пробую дальше. Жму CtrlK, и устанавливаю фильтр на F2, открываю настройки (вижу там F2) и сохраняю их нажатием Enter.
Возвращаюсь в список макросов, и снова пытаюсь сбросить фильтр (CtrlAltK). И происходит совсем уж странное: фильтр устанавливается в "F1".
Понял. Забыл обновлять сохранённые фильтры после сохранения. Исправлю.
John Doe wrote:[*]В диалоге конфигурации метка "key" снабжена хоткеем "k", но нажатие AltK вместо ожидаемого перехода в поле выполняет совсем другое действие - переключает чекбокс [ ] Keyboard
Ага, надо поправить хоткей.
John Doe wrote:[*]Сейчас информацию о версии LuaManager можно увидеть только в исходнике.
Предлагаю добавить в диалог конфигурации, или справку.[/list]
ОК.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Версия 3.1.4 - Исправлена ошибка со сбросом к старым значениям фильтра после сохранения конфигурации. Поправлены хоткеи в диалоге конфигурации. Справка дополнена новыми разделами: "Использование скрипта как модуля" и "О скрипте". В главное меню добавлены команды CtrlA (временно включить показ вообще всего), CtrlShiftK (ввод произвольной маски клавиш), CtrlAltF (сбросить маску файлов; в связи с этим CtrlF больше не сбрасывает маску файлов, если она установлена). Мелкие правки.
aflexus
Posts: 74
Joined: Sat 12 Mar, 2011 16:57
Has thanked: 23 times
Been thanked: 1 time

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

Post by aflexus »

В версии 3.1.4 вызов скрипта выдает ошибку:

Code: Select all

 D:\Dev\Far\Far3\Plugins\LuaMacro\LuaMacro.dll:
 ...ar\Far3\Profile\Macros\scripts\LuaManager\LuaManager.lua:2237:
 attempt to concatenate field 'id' (a nil value)
 stack traceback:
    ...ar\Far3\Profile\Macros\scripts\LuaManager\LuaManager.lua:
 2237: in function 'ManageMacrosEvents'
    ...ar\Far3\Profile\Macros\scripts\LuaManager\LuaManager.lua:
 2537: in function 'action'
    D:\Dev\Far\Far3\Plugins\LuaMacro\LuaMacro.lua:415: in function
 <D:\Dev\Far\Far3\Plugins\LuaMacro\LuaMacro.lua:369>
В версии 2.2.7 подобного не наблюдалось.

Как выяснилось проблема была со скриптом BookmarkManager.lua. Обновил до его последней версии 2.2.1 - все ок.

При этом появился новый конфликт с IncSearch.lua. Тут обе версии последние. При загрузке обоих меню "Manage avaliable lua/moon scripts" в плагинах исчезает...
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

aflexus wrote:При этом появился новый конфликт с IncSearch.lua. Тут обе версии последние. При загрузке обоих меню "Manage avaliable lua/moon scripts" в плагинах исчезает...
Проверил и с релизной, и с альфа-версией, повторить не смог. Единственная мысль: язык не переключали? При этом меняется язык надписи.
aflexus
Posts: 74
Joined: Sat 12 Mar, 2011 16:57
Has thanked: 23 times
Been thanked: 1 time

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

Post by aflexus »

Far 3.0.4747, IncSearch v2.9 alpha, LuaManager v3.1.4

Проявляется, когда в IncSearch включено использование EdtFind (local useEdtFind = true). EditFind установлен.
Забавно, что на чистой сборке, только с этими условиями тоже не повторяется. Видимо конфликтует еще с чем-то...

Ага, все, нашел. Проблема только на 64-битной версии:
- Распаковал дистрибутив Far. Сделал локальный профиль.
- Кинул в плагины EditFind.
- В скрипты два вышеназванных.

Да, язык EN

Более того, даже нашел почему происходит: я 64-битные плагины переименовываю и добавляю постфикс "_64" к имени, скидывая их в одну папку по возможности. В данном случае именно из-за этого скрипт и виснет. Сам IncSearch при этом продолжает прекрасно работать :)
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Вот (вызвал из меню плагинов)

Code: Select all

╔════════════════════════════════════════════════ Error ═════════════════════════════════════════════════╗
║ C:\APPs\Far3\Plugins\LuaMacro\LuaMacro.dll:                                                            ║
║ ...3\Profile\Macros\scripts\Macro\LuaManager\LuaManager.lua:2237: attempt to concatenate field 'id' (  ║
║ a nil value)                                                                                           ║
║ Stack Traceback                                                                                        ║
║ ===============                                                                                        ║
║ (2) metamethod C function '__concat'                                                                   ║
║ (3) Lua upvalue 'ManageMacrosEvents' at file 'C:\APPs\Far3\Profile\Macros\scripts\Macro\LuaManager\    ║
║ LuaManager.lua:2237'                                                                                   ║
║    Local variables:                                                                                    ║
║     PTable = table: 0x039b32a0  {}                                                                     ║
║     GetMenuItems = Lua function '(anonymous)' (defined at line 1128 of chunk C:\APPs\Far3\Plugins\     ║
║ LuaMacro\utils.lua)                                                                                    ║
║     GetPrefixes = Lua function '(anonymous)' (defined at line 1130 of chunk C:\APPs\Far3\Plugins\      ║
║ LuaMacro\utils.lua)                                                                                    ║
║     ShortArea = Lua function 'ShortArea' (defined at line 2073 of chunk ...3\Profile\Macros\scripts\   ║
║ Macro\LuaManager\LuaManager.lua)                                                                       ║
║     ShortGroup = Lua function 'ShortGroup' (defined at line 2082 of chunk ...3\Profile\Macros\scripts\ ║
║ Macro\LuaManager\LuaManager.lua)                                                                       ║
║     CompareMacros = Lua function 'CompareMacros' (defined at line 2090 of chunk ...3\Profile\Macros\   ║
║ scripts\Macro\LuaManager\LuaManager.lua)                                                               ║
║     CompareEvents = Lua function 'CompareEvents' (defined at line 2106 of chunk ...3\Profile\Macros\   ║
║ scripts\Macro\LuaManager\LuaManager.lua)                                                               ║
║     CompareModules = Lua function 'CompareModules' (defined at line 2119 of chunk ...3\Profile\Macros\ ║
║ scripts\Macro\LuaManager\LuaManager.lua)                                                               ║
║     CompareMenuItems = Lua function 'CompareMenuItems' (defined at line 2132 of chunk ...3\Profile\    ║
║ Macros\scripts\Macro\LuaManager\LuaManager.lua)                                                        ║
║     ComparePrefixes = Lua function 'ComparePrefixes' (defined at line 2150 of chunk ...3\Profile\      ║
║ Macros\scripts\Macro\LuaManager\LuaManager.lua)                                                        ║
║     ProcMod = Lua function 'ProcMod' (defined at line 2162 of chunk ...3\Profile\Macros\scripts\Macro\ ║
║ LuaManager\LuaManager.lua)                                                                             ║
║     events = table: 0x039b32c8  {1:table: 0x039b3450, 2:table: 0x039b35b0, 3:table: 0x0509d110, 4:     ║
║ table: 0x039a7ad0 (more...)}                                                                           ║
║     macros = table: 0x039b32f0  {1:table: 0x03abc9c0}                                                  ║
║     keymacros = table: 0x050c8bc0  {}                                                                  ║
║     modules = table: 0x050c8be8  {}                                                                    ║
║     menuitems = table: 0x050c8c10  {1:table: 0x0449f2f8, 2:table: 0x0449f718, 3:table: 0x0449fb20, 4:  ║
║ table: 0x0449f448 (more...)}                                                                           ║
║     prefixes = table: 0x050c8c38  {}                                                                   ║
║     items = table: 0x050c8c60  {}                                                                      ║
║     key_w = number: 4                                                                                  ║
║     desc_w = number: 26                                                                                ║
║     group_w = number: 11                                                                               ║
║     mask_w = number: 12                                                                                ║
║     edesc_w = number: 61                                                                               ║
║     mname_w = number: 0                                                                                ║
║     mmask_w = number: 0                                                                                ║
║     midesc_w = number: 53                                                                              ║
║     prpref_w = number: 0                                                                               ║
╟────────────────────────────────────────────────────────────────────────────────────────────────────────╢
║                                                 { OK }                                                 ║
╚════════════════════════════════════════════════════════════════════════════════════════════════════════╝
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

aflexus wrote:Far 3.0.4747, IncSearch v2.9 alpha, LuaManager v3.1.4

Поскольку и на работе, и дома систем 32-битная, проверить с ходу явно не смогу. Тем более, что, как я понял, у Вас и настройка Far не совсем стандартная. Рекомендую поискать, не фигурирует ли гуид "151E6FE6-DDB2-4CBD-B2C2-21A8D0E135BD" у какого-то из плагинов (по F3 в меню плагинов), прежде всего у EditFind. Вероятность исчезающе мала, но мало ли. Потому что больше причин я не вижу. LuaManager делает всё строго по документации. BookmarkManager ведь не пропадает из меню плагинов?
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

John Doe wrote:Вот (вызвал из меню плагинов)
Версия 3.1.4? Там нет поддержки последних изменений. Выложу свежую, только убежусь ещё раз, что всё в порядке.
aflexus
Posts: 74
Joined: Sat 12 Mar, 2011 16:57
Has thanked: 23 times
Been thanked: 1 time

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

Post by aflexus »

IgorZ
Не важно какая битность. Переименуйте dll-ку плагина EditFind. На ее работе это никак не отразится, а вот luamanager в комплекте с incSearch ее обрабатывать перестанет.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

aflexus wrote: Не важно какая битность. Переименуйте dll-ку плагина EditFind. На ее работе это никак не отразится, а вот luamanager в комплекте с incSearch ее обрабатывать перестанет.
Far Manager v3.0 build 4747 x86 чистый; IncSearch v2.9; EdtFind v1.14 x86(переименован в Renamed_EdtFind.dll).
Повторить не удалось, всё работает, как положено.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Версия 3.1.5 - Доработка под поле "id" в Macro/Event для новых версий LuaMacro/rebind. Совместимость со старыми версиями в наличии: новый LuaManager корректно работает со связкой старый Far+старый rebind. Мелкие правки. На всякий случай старая версия всё же сохранена.
aflexus
Posts: 74
Joined: Sat 12 Mar, 2011 16:57
Has thanked: 23 times
Been thanked: 1 time

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

Post by aflexus »

Какой-то очень специфичный баг... На x86 действительно не повторяется никак. На x64 повторяется, но только при условии переименования dll-ки в "EdtFind_64.dll" либо же папки плагина в "EdtFind_64" . Другие имена работают вроде-как нормально.

Версия 3.1.5 - то же самое :mad:

Залил x64 комплект в котором проявляется.

Update: Первый запуск с чистыми настройками - пункт меню всегда есть. :) И работает. Пропадает же только при втором запуске. Можно закрыть фар, переименовать папку и запустить - появится вновь, но только до рестарта. Можно так же удалить в профиле plugincache64.db - тот же эффект.
aflexus
Posts: 74
Joined: Sat 12 Mar, 2011 16:57
Has thanked: 23 times
Been thanked: 1 time

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

Post by aflexus »

Far v3.0.4747 x64. LuaManger 3.1.5 При нажатии на F3 над скриптом DialogClass.lua v1.11 фар крашится... На чистой сборке не повторяется. Буду искать с чем конфликтует. Найдено: EnvEdit.lua + DialogClass.lua

Сборка x86 на которой падает здесь.



В х86 то же самое, но не вылет:
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

aflexus wrote:Залил x64 комплект в котором проявляется.
Нет возможности запустить x64 версию. Идей насчёт причин - никаких. Кроме одной: поскольку LuaManager по определению не зависит от битности, рыть, скорее всего, надо не в нём.
Кстати, если постфикс сделать не "_64", а, допустим, "_x64" или "x64", всё равно будет ошибка?
aflexus wrote:Far v3.0.4747 x64. LuaManger 3.1.5 При нажатии на F3 над скриптом DialogClass.lua v1.11 фар крашится... На чистой сборке не повторяется. Буду искать с чем конфликтует. Найдено: EnvEdit.lua + DialogClass.lua
Тут всё просто, хоть и грустно. EnvEdit.lua при загрузке макросов подгружает DialogClass.lua. LuaManger по F3 для загруженных модулей показывает результат, раскручивая, в том числе, таблицы. Автор модуля DialogClass.lua поступает очень "интересно": одно из полей возвращаемого модулем результата - таблица DialogClass, содержащая поле __index, которое определено как DialogClass.__index = DialogClass. Таким образом, при разворачивании результата, возвращаемого модулем, происходит бесконечное зацикливание, пожирающее память. Крах в таком случае неизбежен. Как с таким зацикливанием бороться гарантированно - пока не знаю.

Могу рекомендовать обходной путь: отказаться от DialogClass.lua и скриптов, его использующих. В частности, вместо EnvEdit.lua попробуйте EnvManager. Он чуть более функционален, при этом немного меньше, не тянет за собой модулей и, на мой взгляд, поудобнее.
Post Reply

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