View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0003230 | Wishes.Plugins | LuaMacro / Macro Browser | public | 2016-05-08 19:28 | 2017-10-20 06:08 |
Reporter | IgorZ | Assigned To | |||
Priority | normal | Severity | feature | Reproducibility | have not tried |
Status | new | Resolution | open | ||
Product Version | 3.0 | ||||
Summary | 0003230: Возвращать значение для mf.usermenu() при синхронном вызове | ||||
Description | Предлагаю добавить функции mf.usermenu() при синхронном вызове возврат результата. Предполагаемый вариант возвращаемого результата: строка - запущенная команда; число - отказ (к примеру, 0/1 - выход по Esc/ShiftF10); false,error (или nil,error) - ошибка. Обоснование: в настоящем виде функция mf.usermenu() не позволяет полностью реализовать вложенные файлы меню - невозможно определить, возвращаться в вышестоящее меню после вызова, или нет. Реализация кода возврата позволит использовать в меню Far конструкции вида
и более сложные.Ссылка на пост на форуме | ||||
Tags | No tags attached. | ||||
|
|
|
Что значит "ошибка"?Исходя из примера - ошибка это "не удалось открыть меню из указанного файла". false - ошибка 0 - команда -1 - отмена |
|
Да уж, так замотался тогда, что и забыл про этот виш. Лучше поздно, чем никогда, так что отвечаю:Проблемы с файлом меню: не найден/нет доступа... - самое очевидное. Возможно, могут быть и другие проблемы. Для более гибкого управления. Скажем, при вызове меню из макроса, в зависимости от исполненной команды можно запускать тот или иной постобработчик. Простой пример: если пользовательское меню вызывается из редактора и часть пунктов меняют путь на панели, то для них лично я предпочёл бы вернуть состояние панелей до запуска меню. В то же время, при вызове данного меню из панелей смена пути будет вполне допустима (а то и желательна), так что посстановление состояния в самих пунктах меню - излишне. Неясно, как распознать ошибку в таком случае? Esc и ShiftF10 требуют разной реакции, если реализовывать вложенные меню. По Esc надо перезапускать меню верхнего уровня, по ShiftF10 закрывать всё. Собственно, для успешной реализации программы-минимум - вложенных пользовательских меню в отдельных файлах - надо различать четыре состояния: ошибка вызова меню, выполнена команда, нажата Esc, нажата ShiftF10. Конкретизация выполненной команды - программа-максимум. |