ОБНОВЛЯТСЯ В ДАЛьНЕЙШЕМ НЕ БУДЕТ
(текущая/экспериментальная/обновленная версия находится у меня,
но дальнейшей синхронизации скорее всего не будет
если все-же. кому чего нужно, то пишите сюда,
скорее всего отвечу, и скорее всего быстро)
MULTIPLE KEY SEQUENCES (COMBINATIONS) CONSISTING OF UNLIMITED MULTIPLE KEY STROKES
The original idea and script:
viewtopic.php?f=15&t=8764
MacroEx — запуск макросов нетрадиционными способами eXtended @Xer0X Edition
https://github.com/dr-dba/far-lua-key-efficiency
The latest version which is still similar to the @JD original,
next modifications will differ significantly:
https://github.com/dr-dba/far-lua-key-e ... 4cc83fd023
The differences from the original MacroEx:
- Shorter sequences/extension takes precedence and thus priority other longer ones.
for example:CtrlF1-AltF2
will be executed, rather thanCtrlF1-AltF2-ShiftF3
That seems to be the most natural and obvious behavior, but opposite to the original idea, though.
Same way and logic, all the "normal" keys takes precedence/priority other sequenced/extended ones.
As for example:CtrlF1
will be executed, rather thanCtrlF1-AltF2
- (R|L)(Alt|Ctrl) differentiated, handled correctly traditional (for single key presses) in the FAR way
- Key sequence can be of an unlimited length, the original has only two keypresses possible
- Key sequences can be of any letters, for example X-Y-Z is a completely legit sequence.
- :(Hold|Double) can be at any place in the sequence any times (the original the first position only)
- You can cancel the current incomplete sequence by pressing Escape
- Conditioned and pre-conditioning for macro execution by function + file mask + flags, if those defined
- Now such as these key combinations are handled correctly:
CtrlAlt
-CtrlAlt
works as following:
Ctrl
[DOWN
]==>>Alt
[DOWN
]==>>Alt
[UP
]==>>Ctrl
[UP
] ...Ctrl
[DOWN
]==>>Alt
[DOWN
]==>>Alt
[UP
]==>>Ctrl
[UP
]CtrlAlt
-Alt
works as following:
Ctrl
[DOWN
]==>>Alt
[DOWN
]==>>Alt
[UP
]==>>Ctrl
[UP
] ...Alt
[DOWN
]==>>Alt
[UP
]CtrlAlt
:Double
works as following:
Ctrl
[DOWN
]==>>Alt
[DOWN
]==>>Alt
[UP
]==>>Alt
[DOWN
]==>>Alt
[UP
]CtrlAlt
:Hold
works as following:
Ctrl
[DOWN
]==>>Alt
[DOWN
]==>>Alt
[UP
] ... {STILL HOLDING CTRL FOR THE CERTAIN TIME} ...Ctrl
[UP
]
1.) Назначение на любой макро-скрипт по желанию
2.) Использовать для вставки templates при некоторых многобуквенных сочетаниях,
например
forip
произведет for ii, vv in pairs(tbl1) do .. end
3.) например транслит где есть такое как "shch" для "щ"
4.) ВИМовские кнопкосочетания типа
:q!
(exit without saving)5.) еще? ну итд итп. Свобода полета вобщем
Некоторые детали реализации:
- Для обуславливания за основу взята функция
GetMacro
из%FarHome%\Plugins\LuaMacro\utils.lua
- Функция для капитализации (key prettify) кнопочек сидит в модуле
%APPDATA%\Far Manager\Profile\Macros\modules\Lib-Common-@Xer0X.lua
- handler-ы, каждый хандлер это макрос который работает для многих расширенных нажатий.
перед тем как возбудиться, в своем condition он проверяет есть ли у него согласные исполнятся макросы.
Если таких нет, то ничего не происходит.
если есть, то составляется таблица согласных исполнятся макросов,
дальнейшее происходит в зависимости от то что именно понажимал юзер.
AltEscape
просто отменяет последовательность, ничего не запускаетсяShiftSpace
прекращает последовательность, кнопочки бегут по отдельности как обычные
ShiftSpace
и AltEscape
могут быть в начале последовательности,так как как им там не доступна роль контолирующих кнопочек, например:
ShiftSpace-Space-1-2-3
AltEsc:Double-Space-A-B-C
пример общего вида при исполнении: для того чтобы не устраивать людям балаган там где его не ждут,
вce примеры в
MacroEx_test
сейчасс filemask = "*.lua.dat", flags = "EVSelection"
лучше начать с того что открыть файл с расширением
.lua.dat
, и экспериментировать с кнопочками и условиями выполнения там.
Естессно, можно убирать или менять условия выполнения стандартными в ФАРе способами:
condition()
, filemask
, flags
DEPENDS ON MODULES:
https://github.com/dr-dba/far-lua-internals
introspection-@Xer0X.lua
https://github.com/dr-dba/far-lua-general-utils
Lib-Common-@Xer0X.Lua
https://github.com/dr-dba/far-lua-diagnostics
StackTracePlusPlus-@Xer0X.Lua
https://github.com/dr-dba/lua-serialize
dmp-tbl-alt-@Xer0X.Lua
"мануал/ридми" старый и не отражает всего функционала
вопросы, пожелания - писать, опять же, см. начало текста