View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002310 | Wishes | Macro | public | 2013-02-20 16:32 | 2021-06-26 15:12 |
Reporter | JohnDoe | Assigned To | |||
Priority | normal | Severity | minor | Reproducibility | have not tried |
Status | new | Resolution | open | ||
Product Version | 3.0 | ||||
Summary | 0002310: Передавать макросу полный разбор регэкспа - клавиши | ||||
Description | Нередко возникает потребность в разборе клавиатурной комбинации на составляющие. Название клавиши, служащей для вызова макроса, задано регулярным выражение, например key="/(R?Ctrl)?(R?Alt)(.+)/"; Но чтобы проанализировать комбинацию внутри action - необходимо применить этот же регэксп повторно. Чтобы избежать дублирования, предлагаю передавать функции action результат применения регэкспа, в виде таблицы. | ||||
Additional Information | http://forum.farmanager.com/viewtopic.php?p=103918#p103918 | ||||
Tags | No tags attached. | ||||
Build | |||||
|
Актуально также для condition |
|
Пример таблицы? |
|
{"RCtrl","Alt","Del"} |
|
Спорно - её разбор будет не намного проще разбора имени клавиши... вот если таблица будет: {LCtrl,RCtrl,LAlt,RAlt,Shift,Key} где все поля, кроме последнего логические то это упростит работу! ещё бы туда Win... а если уж совсем ленится в макросе, то лучше всего: {Win,LWin,RWin,Ctrl,LCtrl,RCtrl,Alt,LAlt,RAlt,Shift,Key} |
|
Речь не о разборе кнопкосочетания на _все_ отдельные составляющие. А всего лишь о разборе регэкспа, чтобы не разбирать его второй раз. Упрощения тут нет, просто убирается повторный разбор. Ваше пожелание конечно тоже имеет право на существование. |
|
Упомяну ещё 2 момента 1. Регэкспы lua отличаются от фаровских, поэтому приходится или адаптировать регэксп (что хоть и несложно, но может потенциально внести ошибку), или использовать фаровские функции regex.* 2. Даже используя regex.* всё равно регэксп надо менять, потому что в akey(1) приходит немного не то: левосторонние модификаторы приходят без L. И эти отличия приводят к мелким, но досадным ошибкам. |
|
Ещё один пример потенциального использования http://forum.farmanager.com/viewtopic.php?p=106256#p106256 |
|
Сейчас для функции condition первым параметром передаётся имя нажатой клавиши (akey) Предлагаю: 1) передавать и action и condition одинаковые параметры 2) в случае если клавиша задана регекспом - передавать таблицу с разбором клавиши 3) в таблице каждый индекс соответствует значению, возвращаемому regex.match, а нулевой индекс - полное имя клавиши. P.S. Если это предложение будет принято, то автоматически решится и другой тикет: 0002309 |
|
Альтернативно. Макрос мог бы получать таблицу, используя функцию mf.akey. Впрочем, для condition это проблематично.. |
|
Новый взгляд. (1) Внутри utils.lua "разбор" не хранится (там только match), а создавать его для каждого макроса "на всякий случай" отчасти расточительство. К тому же с момента создания тикета у макросов появилась возможность обращаться к собственным полям. Поэтому предлагаю передавать макросу не разбор, а исходные данные: key: lctrllshiftspace https://github.com/FarGroup/FarManager/blob/2969451303b0d8743878e1a7db388d71e7569d73/plugins/luamacro/utils.lua#L999 (2) Как именно передавать этот и подобные аргументы обсуждается тут https://forum.farmanager.com/viewtopic.php?f=15&t=11950&p=157671#p157671 |
Date Modified | Username | Field | Change |
---|---|---|---|
2013-02-20 16:32 | JohnDoe | New Issue | |
2013-02-20 16:34 | JohnDoe | Note Added: 0010356 | |
2013-02-23 10:21 | SUSim | Note Added: 0010382 | |
2013-02-23 10:26 | JohnDoe | Note Added: 0010383 | |
2013-02-23 11:23 | SUSim | Note Added: 0010384 | |
2013-02-23 11:24 | SUSim | Note Edited: 0010384 | |
2013-02-23 11:24 | SUSim | Note Edited: 0010384 | |
2013-02-23 11:34 | JohnDoe | Note Added: 0010385 | |
2013-02-27 00:03 | JohnDoe | Note Added: 0010392 | |
2013-03-22 11:00 | JohnDoe | Note Added: 0010598 | |
2014-01-23 08:46 | JohnDoe | Note Added: 0011737 | |
2014-01-23 08:53 | JohnDoe | Note Edited: 0011737 | |
2017-10-23 12:24 | JohnDoe | Note Added: 0015739 | |
2021-06-26 15:12 | JohnDoe | Note Added: 0017096 |