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

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

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

Postby 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+.

Attachments
LuaManager.3.1.9.7z
(50.58 KiB) Downloaded 40 times
Last edited by IgorZ on Fri 07 Apr, 2017 06:20, edited 62 times in total.

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

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

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

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

Postby 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 можно увидеть только в исходнике.
    Предлагаю добавить в диалог конфигурации, или справку.
  • ОК.

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

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

    Postby IgorZ » Wed 06 Jul, 2016 12:07

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

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

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

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

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

    Postby IgorZ » Wed 03 Aug, 2016 10:02

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

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

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

    Postby 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 при этом продолжает прекрасно работать :)
    Last edited by aflexus on Wed 03 Aug, 2016 11:56, edited 5 times in total.

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

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

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

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

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

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

    Postby IgorZ » Wed 03 Aug, 2016 12:14

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

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

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

    Postby aflexus » Wed 03 Aug, 2016 13:17

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

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

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

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

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

    Postby IgorZ » Thu 04 Aug, 2016 11:24

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

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

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

    Postby aflexus » Thu 04 Aug, 2016 13:09

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

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

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

    Update: Первый запуск с чистыми настройками - пункт меню всегда есть. :) И работает. Пропадает же только при втором запуске. Можно закрыть фар, переименовать папку и запустить - появится вновь, но только до рестарта. Можно так же удалить в профиле plugincache64.db - тот же эффект.
    Last edited by aflexus on Thu 04 Aug, 2016 20:39, edited 2 times in total.

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

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

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

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

    Postby 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: 691
    Joined: Thu 23 Jul, 2009 10:16
    Has thanked: 31 times
    Been thanked: 5 times

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

    Postby 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: 11037
    Joined: Wed 27 Apr, 2005 20:42
    Has thanked: 9 times
    Been thanked: 62 times

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

    Postby John Doe » Fri 05 Aug, 2016 09:50

    IgorZ wrote:Source of the post Как с таким зацикливанием бороться гарантированно - пока не знаю.
    А что вы с ним делаете там? куда разворачиваете?

    IgorZ wrote:Source of the post Могу рекомендовать обходной путь: отказаться от DialogClass.lua и скриптов, его использующих.
    Сурово)


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

    Who is online

    Users browsing this forum: No registered users and 1 guest