- Как и штатный Macro Browser, утилита отображает список загруженных макросов и обработчиков событий, позволяет посмотреть информацию о выбранном, и перейти к месту определения макроса.
Название Macro Browser alt. подчёркивает факт отличия от встроенного браузера (хотя данная утилита появился ещё в то время, когда встроенного браузера не существовало). Отличия в интерфейсе минимизированы, но некоторые исторически возникшие расхождения всё же присутствуют, например:• Макрообласти отображаются тоже схематично, но схема иная:SIQTsFVEDmMUdAaHOC
(идея из LuaManager).
• По CtrlH тоже отображается список 'активных' макросов (Area.Current + 'Common'), но Common галкой не помечаются.
• В информации о макросе, отображаемой по F3, •длинные значения не съезжают (можно прокрутить Alt-стрелками), •в заголовке отображается тип макроса (Macro/Internal/MCTL_ADDMACRO), •неприменимые для данного типа макроса поля помечаются как n/a.
• При запуске макросов по Enter не производится никаких проверок на соответствие макрообласти, истинность condition и пр. (Предполагается что пользователь знает чего хочет). Возможно запустить даже обработчики событий.
Впрочем смысл не в мелких отличиях, а в существенно дополненных возможностях, в том числе:- Список макросов можно упорядочить и отфильтровать по различным критериям.
- Все возможности фильтрации также доступны макросам, и во многих случаях удобно сразу открывать предварительно отфильтрованный список
- 1 фильтр по нажатой клавише (включая заданные регэкспом), 2 по макрообласти (например по текущей), 3 по имени файла (например находящегося под курсором в панелях, или открытого в редакторе), 4 по маске, 5 по флагам (например автостартующие по
RunAfterFARStart
), 6 по приоритету, 7 обработчики событий по группам, 9 список некоторых полезных фильтров, 10 пользовательский фильтр (задаётся выражением Lua, поэтому возможности не ограничены)
Примеры использования в макросах прилагаются
- 1 фильтр по нажатой клавише (включая заданные регэкспом), 2 по макрообласти (например по текущей), 3 по имени файла (например находящегося под курсором в панелях, или открытого в редакторе), 4 по маске, 5 по флагам (например автостартующие по
- Предусмотрены средства для отладки макросов (посредством lua explorer)
- Состояния макросов могут сохраняться между вызовами (
hh.exe %FARHOME%\Encyclopedia\macroapi_manual.chm::/14.html
)
Понятно, что сохраняются глобальные переменные, но кроме того:
— environment (окружение), т.е. значения переменных, объявленных где-либо в файле макроса без ключевого слова local
— upvalues — используемые в action/condition переменные, объявленные за пределами использующих их функций.
И те и другие доступны для просмотра и редактирования (CtrlUp/CtrlDown)
Примечание: если макрос не использует upvalues, и не определяет переменных окружения, то по нажатию этих комбинаций ничего не произойдёт.
Для экспериментов можно отфильтровать такие макросы пользовательским фильтром (RCtrlShift8):
— с непустым окружением:action and next(getfenv(action))
— использующие upvalues:action and debug.getupvalue(action,1)
Эти же фильтры доступны среди прочих из подменю Misc (RCtrlShift9): "non-empty environment", "using upvalues"
- Состояния макросов могут сохраняться между вызовами (
Действия с макросами в списке
- F3 — Краткая информация о макросе
- CtrlPgDn — Открыть таблицу макроса в lua explorer
- CtrlUp — Upvalues функции action
- CtrlDown — Environment функции action
- F4 — Открыть макрос в редакторе, установить курсор в позиции определения функции action
- AltF4 — То же в модальном редакторе (при закрытии возврат к списку)
- CtrlPgUp — Закрыть список и перейти к файлу с макросом
- Enter, CtrlEnter — Выполнить макрос
- Del — запретить/разрешить макрос. Запрещённый макрос отображается серым.
- ShiftF4 — (пере)назначить сочетание клавиш.
В диалоге можно указать несколько клавиш или регэксп. Пустая строка отменяет переназначение.
После этого все макросы перезагружаются, чтобы изменения вступили в силу.
Переназначенные макросы индицируются звёздочкой перед клавишей. - CtrlShiftF4 — открывающая в редакторе файл bindings, и вставляет шаблон для настройки текущего макроса.
Для макросов, переназначенных таким образом, клавиши Del и ShiftF4 действуют иначе: открывают файл настроек в нужном месте.
Фильтры
- • CtrlH — Показать только активные макросы (Area.Current и Common)
• BS — Reset/Last: cброс/восстановление последнего использованного фильтра (запоминается между вызовами в пределах текущей сессии)
• ` — list: список всех фильтров
Активировать фильтр (критерий запрашивается):
• 1 —Key
: по клавише
• 2 —Area
: по области
• Ctrl3 —File
: по файлу
• 3 — список макросов, определённых в том же файле, что и макрос под курсором
• 4 —Mask
: по маске
• 5 —Priority
по приоритету
• 6 —Flags
: по флагам
• 7 —Events
: события по группам
• 9 — Misc: подменю с выбором некоторых полезных фильтров (при наличии модуля rebind в этом меню появляются дополнительные пункты).
• 0 —Custom
: пользовательский фильтр
Custom
фильтр задаётся выражением Lua В выражении доступны идентификаторы полей таблицы макроса и глобальные идентификаторы.
Например:
Например:
priority and priority>50
макросы с повышенным приоритетомcode and not callbackId
internal-макросыcallbackId
'динамические' макросы, добавленные с помощью far.MacroAddarea and area:lower():find("dialog")
пример использования глобальных идентификаторов — штатных функций LuaСортировка
- выбор критерия сортировки из списка:
• CtrlF12
упорядочить по:
• CtrlF1 —Area
поле area/groupname
• CtrlF2 —Key
поле key/groupname
• CtrlF3 —Descr
поле description
• CtrlF4 —Id
поле id
• CtrlF5
• CtrlF6 —File
поле FileName + экспериментально: группировка макросов в секции по имени файла
• CtrlF10 —Custom
режим пользовательской сортировки
• CtrlF11 — задать критерий пользовательской сортировки
Custom
режим сортировки списка задаётся выражением Lua В выражении доступны поля таблиц сравниваемых макросов, и глобальные идентификаторы
Например:
Например:
area or group
key or group
description or ""
id
FileName or ""
Выбранный режим сортировки (кроме пользовательского) сохраняется между запусками.
Повторные нажатия клавиш сортировки (Ctrl-F1..F12) переключает между прямым и обратным порядком.
Прочее
- • F1 — Справка по горячим клавишам Macro browser alt.
• CtrlLeft, CtrlRight — управление шириной колонки клавиш
• CtrlR, CtrlShiftR — перезагрузить макросы
Также в комплект включён макрос для перезагрузки макросов в редакторе (см. ниже)
Скрипт и функции всех макросов можно проверить никуда не устанавливая, через меню пользователя.
FarMenu.ini прилагается
Code: Select all
╔═══════════════════════ Local menu ═══════════════════════╗
║ Show available macros and event handlers ║
║ ` Choose filter: ║
║ 1 list macros by key [choice] ║
║ list macros by area [choice] ║
║ 2 list macros in current area ║
║ list macros by file [choice] ║
║ 3 list macros in current file ║
║ 4 list macros: by mask [choice] ║
║ 5 list macros: by priority [choice] ║
║ list macros by flags [choice] ║
║ 6 list autostart macros ║
║ 7 list event handlers: by group [choice] ║
║ 9 list macros by misc. filters [list] ║
║ 0 list macros by custom filter [choice] ║
║ -- internal macros ║
║ -- MCTL_ADDMACRO macros (created with far.MacroAdd) ║
║ -- MoonScript macros ║
║ -- Lua macros ║
║ -- macros w/o key ║
║ -- macros with non-empty environment ║
║ -- macros using upvalues ║
║ -- macros for CommandLine ║
║ = list macros filtered with last used filter ║
║ r rebind ► ║
║ m macroEx ► ║
║ F5 Reload macros ║
║ F12 Lua Explorer „Advanced“ ║
╚════════════════ Edit: Del,Ins,F4,Alt+F4 ═════════════════╝
Запуск:
- Пункт в меню плагинов Macro Browser alt. открывает полный список назначенных макросов.
- Аналогичный пункт в меню конфигурации плагинов (AltShiftF9) позволяет настроить собственные макросы скрипта (открывает список макросов, относящихся к Macro Browser alt.)
Отсюда удобно менять комбинации клавиш, или отключать неиспользуемые макросы.
- Внимание: прилагаемые макросы используют возможности MacroEx — запуск по двойному нажатию, по удержанию клавиши, или при нажатии последовательностей.
При необходимости вместо этого вы можете назначить собственные макросы на удобные вам клавиши.
LCtrlNumLock (в области Common) — основная клавиша вызова списка макросов.
LCtrlNumLock:Double — вызвать список, отфильтрованный последним использованным фильтром.
LCtrlNumLock:Hold — фильтр по клавише — позволяет открыть макрос без поиска в списке, просто нажав клавишу, на которую он назначен.
Для меня это наиболее востребованная функция.
Дополнительные макросы:
- Чтобы исключить возможность конфликтов приоритет макросов понижен до 30.
Т.е. если у вас существует макрос на ту же клавишу — сработает ваш.
- RCtrlNumLock:Double — выбор фильтра
- RCtrlNumLock-1 — фильтр по клавише (то же что и LCtrlNumLock)
- RCtrlNumLock-2 — список макросов для текущей макрообласти
- RCtrlNumLock-3 — макросы определённые в текущем файле (открытом в редакторе/вьювере, или в панелях под курсором)
- RCtrlNumLock-4 — фильтр по маске
- RCtrlNumLock-5 — фильтр по приоритету
- RCtrlNumLock-6 — автостартующие
- RCtrlNumLock-7 — события по группам
- RCtrlNumLock-8 — cписок всех макросов, назначенных в файле MacroBrowserAlt.lua
- RCtrlNumLock-9 — выбор из списка дополнительных фильтров
- RCtrlNumLock-0 — пользовательский фильтр
- LCtrlF12:Hold — независимый вызов Lua Explorer (к функциям Macro browser alt. это не имеет прямого отношения)
- CtrlEnter CtrlR — Перезагрузка макросов
Макросы перечитываются с диска, поэтому убедитесь что файл сохранён.
(Существует расширенная версия)
В качестве модуля:
- Возможно использовать в качестве модуля (для собственных макросов, или для меню пользователя).
Для этого надо положить MacroBrowserAlt.lua в папкуMacros\modules
.
Code: Select all
in macro definition: action=require"MacroBrowserAlt" in UserMenu: lua:require"MacroBrowserAlt"() in scripts: local browseMacros = require"MacroBrowserAlt" browseMacros(filter,param)
В первом параметре функции browseMacros указывается критерий фильтрации
Он задаётся строкой (доступны:list
,Area
,File
,Mask
,Priority
,Flags
,Events
,Custom
,Last
)
Вторым параметром-строкой указывается значение фильтра (если не указать — запрашивается интерактивно).
Пример:- Показать макросы с непустым окружением:
browseMacros("Custom","action and next(getfenv(action))")
(можно использовать для поиска необъявленных идентификаторов)
- Показать макросы с непустым окружением:
Требования:
- Far 3.0.3971 (LuaMacro 387)
- Модуль Lua Explorer „Advanced“ (при наличии) используется для некоторых функций.
- Модуль rebind может существенно расширить возможности MacroBrowser alt.
Прилагаемые макросы рассчитаны на использование MacroEx.
Предупреждение для неопытных пользователей
- Задача утилиты в том, чтобы предоставить пользователю максимальное удобство в управлении макросами.
Но Macro Browser alt. (в отличии от LuaManager) самостоятельно не изменяет макросы.
Макросы хранятся в файлах, и Macro Browser alt. поможет найти нужный макрос, и открыть соответствующий файл в нужном месте.
Внести изменения (отредактировать/удалить) — это уже задача пользователя, для этого нужно хотя бы минимально понимать структуру макроса.
Чтобы внесённые изменения применились — необходимо перегрузить макросы: CtrlR в списке (или в редакторе, для этого служит макрос в комплекте)
http://forum.farmanager.com/viewtopic.php?f=15&t=10376
Отзывы и пожелания приветствуются.
- MacroBrowserAlt.lua.7z
- r0
- (7.34 KiB) Downloaded 489 times
- MacroBrowserAlt.7z
- r1.2
- (11.09 KiB) Downloaded 397 times