Есть старая тема F11 - выделение в меню плагинов предыдущего выбранного.
Набросал по мотивам макрос, используя возможности обработчика диалоговых событий.
При открытии заданных меню устанавливает курсор на пункт меню, запомненный при предыдущем выборе
Можно настроить для работы в любых списках, для примера заданы три: меню плагинов, меню конфигурации плагинов, список far:about.
Предусмотрен параметр onCancel, управляющий поведением в случае когда выбор в меню не был подтверждён (меню было закрыто по Esc и т.п.)
= "save" - запоминать пункт меню даже если выбор отменён
= "keeplast" - не запоминать при отмене, оставлять последний подтвержённый
= "reset" - при отмене выбора сбрасывать запомненный пункт
Возможно этот параметр стоило бы настраивать для каждого меню отдельно, но пока я даже не знаю в каких ещё списках вообще может быть полезен данный макрос.
Dennis_Moore wrote: ↑Tue 20 Jun, 2017 23:32Если в меню плагинов нажать RAlt и набрать что-то что-бы список стал пустым, а затем нажать Esc или Enter то упадет LuaMacro
Падает на самом деле Фар, а не LuaMacro. Исключение возникает при попытке получить текст несуществующего пункта меню. На мой взгляд, чем падать, лучше бы DM_GETTEXT и прочие возвращали бы, например, -1 как признак неудачи.
На руборде уважаемый Shmuel обнародовал свой вариант макроса по текущей теме. На мой взгляд, этот вариант ещё более удачно раскрывает тему и поэтому заслуживает и более широкой публикации.
Воспользовавшись тем, что данный вариант макроса более доступно для моего понимания структурирован и в нём также содержатся и необходимые мне пояснения, я его несколько дополнил. Вдобавок к заложенному в нём автовыделению последнего выполненного пункта в меню плагинов, в меню настроек плагинов и в far:config я включил в него также обработку меню "Ассоциации для файлов (File associations)" и "Раскраска файлов (Files highlighting)". И в такой форме он прилагается в аттаче.
Добавлено:
На том же руборде опубликован альтернативный вариант макроса Shmuel`я, авторства Alexyz21. Автор анонсировал особенности этого варианта макроса следующим образом: "просто добавляем в таблицу гуиды нужных меню без необходимости редактировать код возврата GetKey() + добавлено меню фильтров". Макрос дополнен в аттач поста.