View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002899 | Wishes | Macro | public | 2015-01-09 11:08 | 2024-05-07 20:03 |
Reporter | JohnDoe | Assigned To | |||
Priority | normal | Severity | minor | Reproducibility | N/A |
Status | closed | Resolution | fixed | ||
Product Version | 3.0 | ||||
Fixed in Version | 3.0 | ||||
Summary | 0002899: eval(S,2) и макросы, содержащие слэш в имени клавиши | ||||
Description | Есть потребность запускать макросы, назначенные на имена с "ненастоящими" клавишами, в частности это используется скриптом MacroEx. При этом возможны случаи, когда в середине оказывается "/", пример из практики: "Ctrl/:Double" (http://forum.farmanager.com/viewtopic.php?p=126709#p126709) Проблема в том, что слеш тут воспринимается как разделитель "область/клавиша", соответственно вызов eval("Ctrl/:Double",2) сработать не может. | ||||
Additional Information | Предлагаю учесть подобные случаи: Если часть строки перед слешам не распознана как название области, то считать всю строку нахванием клавиши (пример кода здесь: http://forum.farmanager.com/viewtopic.php?p=126711#p126711) | ||||
Tags | No tags attached. | ||||
Build | 6331 | ||||
|
Альтернативно: - При необходимости выполнить макрос, который может содержать слэш, всегда указывать и макрообласть. При этом умолчательное значение (текущая+common) может быть представлено например пустой строкой. Таким образом получится нечто вроде этого:
|
|
Вообще в условиях Lua считаю пережитком впихивание макрообласти вместе с самой клавиатурной комбинацией в одну строку. Удобнее указывать отдельным аргументом. В данном случае (Mode=2) последний аргумент не задействован, соответственно можно было бы использовать его. Тогда получилось бы например так:
|
|
Можно пойти ещё дальше. В настоящий момент функция eval жутко перегружена: https://farmanagerlegacy.github.io/macro-api/general.html#:~:text=%D0%92%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D1%8C%20%D0%B8%D0%BB%D0%B8%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%B8%D1%82%D1%8C%20%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C В основном в целях обратной совместимости с эпохой "до Lua". Реально почти все её задачи могут быть выполнены стандартными средствами Lua. (С моей точки зрения "могут" практически равно "должны", но это отдельный вопрос, ломать я ничего не предлагаю) Единственная специфичная задача, которая важна, и не никак может быть заменена ничем другим, это выполнение макросов. Так вот: чтобы не нагружать какими-то усовершенствованиями и без того перегруженный eval, возможно стоит завести совсем отдельную фунцию, служащую именно (и только) для выполнения макросов. |
|
https://github.com/shmuz/far2m/issues/64 |
Date Modified | Username | Field | Change |
---|---|---|---|
2015-01-09 11:08 | JohnDoe | New Issue | |
2024-05-01 14:59 | JohnDoe | Additional Information Updated | |
2024-05-01 15:05 | JohnDoe | Note Added: 0017544 | |
2024-05-01 15:12 | JohnDoe | Note Added: 0017545 | |
2024-05-01 15:12 | JohnDoe | Note Edited: 0017545 | |
2024-05-01 15:13 | JohnDoe | Note Edited: 0017545 | |
2024-05-01 15:15 | JohnDoe | Note Edited: 0017545 | |
2024-05-01 15:15 | JohnDoe | Note Edited: 0017544 | |
2024-05-01 15:31 | JohnDoe | Note Added: 0017546 | |
2024-05-07 20:03 | JohnDoe | Status | new => closed |
2024-05-07 20:03 | JohnDoe | Resolution | open => fixed |
2024-05-07 20:03 | JohnDoe | Fixed in Version | => 3.0 |
2024-05-07 20:03 | JohnDoe | Build | => 6331 |
2024-05-07 20:03 | JohnDoe | Note Added: 0017556 |