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

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

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

Post by IgorZ » Thu 25 Apr, 2013 04:00

Данный скрипт содержит следующие макросы:
  1. Выводит список всех Lua-скриптов Farа и позволяет манипулировать ими.

    Клавиша вызова по умолчанию: AltShiftF11.
  2. Вставка Lua/Moon скрипта (с выбором, какого типа) в редактируемый .lua/.moon файл.
    Клавиша вызова по умолчанию: LCtrlF11.
  3. Вставка Lua/Moon Macro в редактируемый .lua/moon файл.
    Клавиша вызова по умолчанию: RCtrlF11.
  4. Вставка Lua/Moon Event в редактируемый .lua/moon файл.
    Клавиша вызова по умолчанию: RCtrlF11.
  5. Вставка Lua/Moon MenuItem в редактируемый .lua/moon файл.
    Клавиша вызова по умолчанию: RCtrlF11.
  6. Вставка Lua/Moon CommandLine в редактируемый .lua/moon файл.
    Клавиша вызова по умолчанию: RCtrlF11.
  7. Редактирование Lua/Moon скрипта из редактируемого файла.
    Клавиша вызова по умолчанию: CtrlF12.
  8. Вставка строки guid в редактируемый .lua/moon файл.
    Клавиша вызова по умолчанию: RCtrlU.
  9. Перезагрузка всех скриптов.
    Клавиша вызова по умолчанию: CtrlF9.
Требуемая версия Far 3.0.4000+.

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

Attachments
LuaManager.3.1.11.7z
Последняя версия, выполненная в виде скрипта
(50.56 KiB) Downloaded 53 times
LuaManager.4.0.0.7z
Просто последняя версия
(50.22 KiB) Downloaded 63 times

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

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

Post by John Doe » Sun 03 Jul, 2016 11:18

Latest post of the previous page:

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

    Ок, допустим, пробую дальше. Жму CtrlK, и устанавливаю фильтр на F2, открываю настройки (вижу там F2) и сохраняю их нажатием Enter.
    Возвращаюсь в список макросов, и снова пытаюсь сбросить фильтр (CtrlAltK). И происходит совсем уж странное: фильтр устанавливается в "F1".
  • В диалоге конфигурации метка "key" снабжена хоткеем "k", но нажатие AltK вместо ожидаемого перехода в поле выполняет совсем другое действие - переключает чекбокс [ ] Keyboard
  • Сейчас информацию о версии LuaManager можно увидеть только в исходнике.
    Предлагаю добавить в диалог конфигурации, или справку.

IgorZ
Posts: 461
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Mon 04 Jul, 2016 09:17

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: 461
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Wed 06 Jul, 2016 12:07

Версия 3.1.4 - Исправлена ошибка со сбросом к старым значениям фильтра после сохранения конфигурации. Поправлены хоткеи в диалоге конфигурации. Справка дополнена новыми разделами: "Использование скрипта как модуля" и "О скрипте". В главное меню добавлены команды CtrlA (временно включить показ вообще всего), CtrlShiftK (ввод произвольной маски клавиш), CtrlAltF (сбросить маску файлов; в связи с этим CtrlF больше не сбрасывает маску файлов, если она установлена). Мелкие правки.

aflexus
Posts: 36
Joined: Sat 12 Mar, 2011 16:57
Has thanked: 4 times

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

Post by aflexus » Tue 02 Aug, 2016 17:18

В версии 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: 461
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Wed 03 Aug, 2016 10:02

aflexus wrote:При этом появился новый конфликт с IncSearch.lua. Тут обе версии последние. При загрузке обоих меню "Manage avaliable lua/moon scripts" в плагинах исчезает...
Проверил и с релизной, и с альфа-версией, повторить не смог. Единственная мысль: язык не переключали? При этом меняется язык надписи.

aflexus
Posts: 36
Joined: Sat 12 Mar, 2011 16:57
Has thanked: 4 times

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

Post by aflexus » Wed 03 Aug, 2016 11:26

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: 11246
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 81 times

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

Post by John Doe » Wed 03 Aug, 2016 11:31

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

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: 461
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Wed 03 Aug, 2016 12:11

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: 461
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Wed 03 Aug, 2016 12:14

John Doe wrote:Вот (вызвал из меню плагинов)
Версия 3.1.4? Там нет поддержки последних изменений. Выложу свежую, только убежусь ещё раз, что всё в порядке.

aflexus
Posts: 36
Joined: Sat 12 Mar, 2011 16:57
Has thanked: 4 times

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

Post by aflexus » Wed 03 Aug, 2016 13:17

IgorZ
Не важно какая битность. Переименуйте dll-ку плагина EditFind. На ее работе это никак не отразится, а вот luamanager в комплекте с incSearch ее обрабатывать перестанет.

IgorZ
Posts: 461
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Thu 04 Aug, 2016 05:53

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: 461
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Thu 04 Aug, 2016 11:24

Версия 3.1.5 - Доработка под поле "id" в Macro/Event для новых версий LuaMacro/rebind. Совместимость со старыми версиями в наличии: новый LuaManager корректно работает со связкой старый Far+старый rebind. Мелкие правки. На всякий случай старая версия всё же сохранена.

aflexus
Posts: 36
Joined: Sat 12 Mar, 2011 16:57
Has thanked: 4 times

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

Post by aflexus » Thu 04 Aug, 2016 13:09

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

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

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

Update: Первый запуск с чистыми настройками - пункт меню всегда есть. :) И работает. Пропадает же только при втором запуске. Можно закрыть фар, переименовать папку и запустить - появится вновь, но только до рестарта. Можно так же удалить в профиле plugincache64.db - тот же эффект.

aflexus
Posts: 36
Joined: Sat 12 Mar, 2011 16:57
Has thanked: 4 times

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

Post by aflexus » Thu 04 Aug, 2016 20:32

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

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



В х86 то же самое, но не вылет:

IgorZ
Posts: 461
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Fri 05 Aug, 2016 07:42

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

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

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

Post by sToLp » Fri 05 Aug, 2016 07:44

aflexus wrote:LuaManger 3.1.5 При нажатии на F3 над скриптом DialogClass.lua v1.11 фар крашится...
В Far 3.0.4750 x64 подтверждаю. При наличии любого из следующих макросов:
EnvEdit — редактор переменных среды
DescriptionMultiEdit
ReName

Far 3.0.4750 x86 в той же ситуации не падает, выдаёт

P.S. пока писал пришёл ответ :)

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

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

Post by John Doe » Fri 05 Aug, 2016 09:50

IgorZ wrote: Как с таким зацикливанием бороться гарантированно - пока не знаю.
А что вы с ним делаете там? куда разворачиваете?
IgorZ wrote: Могу рекомендовать обходной путь: отказаться от DialogClass.lua и скриптов, его использующих.
Сурово)

Post Reply

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