rebind — управление клавишами вызова макросов

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

rebind — управление клавишами вызова макросов

Post by John Doe »


Ниже предлагается простое централизованное решение, позволяющее отключить любой сторонний макрос, или переопределить его клавиатурную комбинацию.
Прототип обсуждался ранее, а теперь всё это можно делать интерактивно, с помощью одного из двух альтернативных макро браузеров:
  • http://forum.farmanager.com/viewtopic.php?f=60&t=7936 (подробности в шапке темы)
  • MacroBrowser подробности тут:
Все настройки (состояние запрета и переназначенные клавиши) сохраняются в базе, и загружаются при запуске фара.
Также поддерживается альтернативный способ хранения настроек, в файле %FARPROFILE%\Macros\scripts\bindings.

Всё что требуется для работы перечисленных функций — это подключить в _macroinit.lua модуль rebind: require"rebind".
На практике полезно дополнительно настроить модуль:

Об идентификаторах макросов:

Требования: Far 3.0 build >4743 (luamacro build 580)
Attachments
rebind-1.1.7z
(5.15 KiB) Downloaded 272 times
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

rebind — управление клавишами вызова макросов

Post by John Doe »

Latest post of the previous page:

IgorZ wrote: вставил маленький костыль в rebind
Обновил версию в шапке.
Помимо вашей строчки изменения в основном технические: Info для ScriptBrowser, переименованы/дооформлены вспомогательные файлы, добавлен макрос для вставки шаблона в bindings.
IgorZ wrote: Чтобы он заработал с уже имевщимся до костыля профилем, надо произвести любую манипуляцию с rebind
Или запустить из командной строки lua:mf.msave("REBIND","RebindProfile","REBIND")
User avatar
Dennis_Moore
Posts: 295
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 17 times

rebind — управление клавишами вызова макросов

Post by Dennis_Moore »

При наличии этого макроса - http://forum.farmanager.com/viewtopic.p ... 80#p141180
и rebind получаю ошибку после нажатия CtrlO в редакторе.

Если закомментировать строку rebind.Setup {auto_uids=true,no_warnings=true} в _macroinit.lua то ошибка не появляется. FAR 4972, в более ранних не проверял.

Last edited by Dennis_Moore on Sat 03 Jun, 2017 17:49, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

rebind — управление клавишами вызова макросов

Post by John Doe »

Там строка 63 закомментирована напрасно, по-видимому.
А ещё лучше наверно заменить её на if not filename then return mf.AddMacro(m) end
User avatar
Dennis_Moore
Posts: 295
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 17 times

rebind — управление клавишами вызова макросов

Post by Dennis_Moore »

John Doe wrote: Mon 05 Jun, 2017 21:26 Там строка 63 закомментирована напрасно, по-видимому.
А ещё лучше наверно заменить её на if not filename then return mf.AddMacro(m) end
Заменил, починилось. Спасибо.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

rebind — управление клавишами вызова макросов

Post by citRiks »

осмелюсь спросить вот что, лечится ли это?
цитирую сам себя viewtopic.php?p=159603#p159603
Так как у меня Alt<что-нибудь> нужны для модуля PanelAutofilter (от JohnDoe), то AltT:double не работает, я поменял на CtrD:double.
Все круто, кроме того что у меня теперь рушиться модуль "rebind" (viewtopic.php?t=10376)

Code: Select all

╔════════════════════════════════════════════════════════════════════ Error ════════════════════════════════════════════════════════════════════╗
║ C:\Program Files\Far Manager\Plugins\LuaMacro\LuaMacro.dll:                                                                                   ║
║ ...ta\Roaming\Far Manager\Profile\Macros\modules\rebind.lua:47: attempt to index local 'file' (a nil value)                                   ║
║ Stack Traceback                                                                                                                               ║
║ ===============                                                                                                                               ║
║ (2) metamethod C function '__index'                                                                                                           ║
║ (3) Lua upvalue 'MakeUid' at file 'C:\Users\xxxxxx\AppData\Roaming\Far Manager\Profile\Macros\modules\rebind.lua:47'                           ║
║    Local variables:                                                                                                                           ║
║     file = nil                                                                                                                                ║
║     descr = string: ""                                                                                                                        ║
║     (*temporary) = C function: 0x01d78630                                                                                                     ║
║     (*temporary) = string: "≈%s: %s"                                                                                                          ║
║     (*temporary) = nil                                                                                                                        ║
║     (*temporary) = nil                                                                                                                        ║
║     (*temporary) = userdata: 0x03bd8588                                                                                                       ║
║     (*temporary) = string: "attempt to index local 'file' (a nil value)"                                                                      ║
║ (4) Lua upvalue 'AddRegularMacro' at file 'C:\Users\xxxxxx\AppData\Roaming\Far Manager\Profile\Macros\modules\rebind.lua:69'                   ║
║    Local variables:                                                                                                                           ║
║     m = table: 0x03bc0f78  {callbackId:userdata: 0x03bd8588, code:return, callback:userdata: 0x07feee44fc40 (more...)}                        ║
║     filename = nil                                                                                                                            ║
║     currentline = number: -1                                                                                                                  ║
║ (5) Lua function 'AddMacroFromFAR' at file 'C:\Program Files\Far Manager\Plugins\LuaMacro\utils.lua:1149' (best guess)                        ║
║    Local variables:                                                                                                                           ║
║     mode = number: 4                                                                                                                          ║
║     key = string: "MsWheelDown"                                                                                                               ║
║     lang = string: "lua"                                                                                                                      ║
║     code = string: "return"                                                                                                                   ║
║     flags = number: 0                                                                                                                         ║
║     description = string: ""                                                                                                                  ║
║     guid = table: 0x02eb2940  {1:��N� ⌂K��i,�6�M}                                                                                             ║
║     callback = userdata: 0x07feee44fc40                                                                                                       ║
║     callbackId = userdata: 0x03bd8588                                                                                                         ║
║     priority = number: 100                                                                                                                    ║
║     area = string: "Dialog"                                                                                                                   ║
║ (6) upvalue C function 'co_resume'                                                                                                            ║
║ (7) Lua upvalue 'MacroStep' at file 'C:\Program Files\Far Manager\Plugins\LuaMacro\LuaMacro.lua:246'                                          ║
║    Local variables:                                                                                                                           ║
║     handle = table: 0x03d17568  {coro:thread: 0x03a3d928}                                                                                     ║
║     status = string: "suspended"                                                                                                              ║
║     params = table: 0x04700070  {defline:1172, area:Shell, condition:function: 0x046ff2c0, id:EB3566AE-1046-4DEE-97C0-E2BAD78F3AA5 (more...)} ║
║     tp = string: "table"                                                                                                                      ║
║     (*temporary) = Lua function 'FixReturn' (defined at line 211 of chunk C:\Program Files\Far Manager\Plugins\LuaMacro\LuaMacro.lua)         ║
║     (*temporary) = table: 0x03d17568  {coro:thread: 0x03a3d928}                                                                               ║
║ (8) Lua function 'GetInputFromMacro' at file 'C:\Program Files\Far Manager\Plugins\LuaMacro\keymacro.lua:286' (best guess)                    ║
║    Local variables:                                                                                                                           ║
║     macro = table: 0x0312b4f0  {m_id:table: 0x04700010, m_area:1, m_flags:0, m_textkey:CtrlD, m_handle:table: 0x03d17568 (more...)}           ║
║     OldCurState = table: 0x03a39658  {MacroQueue:table: 0x03a396b8, HistoryDisableMask:0, IntKey:16777284}                                    ║
║     value = nil                                                                                                                               ║
╟───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢
║                                                                    { OK }                                                                     ║
╚═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
Но наверное это проблема больше самого rebind-a, напишу и туда
Far Manager, version 3.0.0.5555 x64
Windows 7 x64 SP1 Prof. Ed.
Last edited by citRiks on Fri 13 Mar, 2020 16:20, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

rebind — управление клавишами вызова макросов

Post by John Doe »

citRiks wrote: Fri 13 Mar, 2020 16:19 лечится ли это?
оказывается в шапке не распоследняя версия.

Проверьте, кажется тут я фиксил именно то, что требуется:
rebind.lua
1.1.1
(10.94 KiB) Downloaded 69 times
https://t.me/FarManager — Telegram чат
Post Reply

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