Page 1 of 10

Macro Browser alt. — обозреватель макросов

Posted: Mon 29 Apr, 2013 20:21
by John Doe
Особенности

Действия с макросами в списке
Фильтры
Сортировка
Прочее

Скрипт и функции всех макросов можно проверить никуда не устанавливая, через меню пользователя.
FarMenu.ini прилагается .

Запуск:
  • Пункт в меню плагинов Macro Browser alt. открывает полный список назначенных макросов.
  • Аналогичный пункт в меню конфигурации плагинов (AltShiftF9) позволяет настроить собственные макросы скрипта (открывает список макросов, относящихся к Macro Browser alt.)
    Отсюда удобно менять комбинации клавиш, или отключать неиспользуемые макросы.
Макросы:
Дополнительные макросы:
В качестве модуля:
Требования:
Предупреждение для неопытных пользователей

http://forum.farmanager.com/viewtopic.php?f=15&t=10376

Отзывы и пожелания приветствуются.


История

Posted: Mon 29 Apr, 2013 22:03
by John Doe
К созданию меня подтолкнул один из недостатков LuaManager, а именно: в некоторых случаях невозможно было открыть файл с макросом.
Немного модифицировав GetMacroCopy я добился желаемого.
Утилита оставалась очень простой, и тем не менее почти достаточной для моих задач.
Единственная функция, которой мне не хватало: считывать нажатие клавиши, и фильтровать по ней список.
Однако реализовав это остановиться не получилось, т.к. возникают всё новые идеи )

Re: GetMacroCopy

Posted: Mon 29 Apr, 2013 22:57
by John Doe
Небольшая модификация исходной утилиты.


При выборе макроса в редакторе открывается файл с его определением.
Курсор устанавливается на функцию заданную в action
(Редактор модальный, при закрытии возвращаемся в меню.)

Update
Ну и ещё немного.
1. Ограничение ширины столбцов (как в макросе IgorZ)
2. Примеры дополнительных функций по
Во вложении то что получилось.

P.S.

Re: GetMacroCopy

Posted: Tue 30 Apr, 2013 10:12
by Shmuel
John Doe wrote:Ну и ещё немного.
1. Ограничение ширины столбцов (как в макросе IgorZ)
2. Примеры дополнительных функций [.....]
Во вложении то что получилось.
Нажатие F3 на эвенте приводит к ошибке.

Re: GetMacroCopy

Posted: Tue 30 Apr, 2013 10:22
by John Doe
Исправил строку 36 на
Keys: %s]]):format(m.area or m.group,m.key or ""),m.description or m.id,nil,"l")

Плюс была ошибка в наименовании BreakKey для PageUp (надо: Prior)

Re: Менеджер Lua-скриптов для Fara

Posted: Tue 30 Apr, 2013 21:25
by John Doe
Shmuel wrote:Области и группы в LuaMacro - регистроНЕзависимые.
Клавиши тоже регистронезависимы.
И к тому же не всё просто с левыми и правыми модификаторами: клавиша с модификатором заданным как Ctrl преобразуется в 2 отдельные с LCtrl и RCtrl (аналогично и с Alt)

Почему-то не нашёл в luamacro функцию, которая этим занимается.
Подскажите где искать.
А то вот сижу, собственный велосипед мастерю.

Re: Менеджер Lua-скриптов для Fara

Posted: Tue 30 Apr, 2013 21:36
by Shmuel
John Doe wrote:Клавиши тоже регистронезависимы.
И к тому же не всё просто с левыми и правыми модификаторами: клавиша с модификатором заданным как Ctrl преобразуется в 2 отдельные с LCtrl и RCtrl (аналогично и с Alt)

Почему-то не нашёл в luamacro функцию, которая этим занимается.
Подскажите где искать.
А то вот сижу, собственный велосипед мастерю.
С клавишами проблем у сабжа не заметил, поэтому не упоминал. А насчёт областей и групп - сообщил, поскольку вдруг заметил, что один из моих эвентов отсутствует в меню сабжа.

В LuaMacro всё преобразуется с помощью lower(). А левыми-правыми модификаторами занимается ф-ция ExpandKey.

Re: Менеджер Lua-скриптов для Fara

Posted: Tue 30 Apr, 2013 22:04
by John Doe
Shmuel wrote:А левыми-правыми модификаторами занимается ф-ция ExpandKey.
И куда я смотрел...
Но мой велосипед вроде тоже катит
Хотя не, кое-где глючит...Починил

Нельзя ли вашу ExpandKey возвращать из utils?

Re: Менеджер Lua-скриптов для Fara

Posted: Tue 30 Apr, 2013 22:09
by Shmuel
Но мой велосипед вроде тоже катит
Может он ещё лучше катит. Но здесь имеет значение производительность (ваш велосипед не исследовал).
Нельзя ли вашу ExpandKey возвращать из utils?
Возвращать куда?

Re: Менеджер Lua-скриптов для Fara

Posted: Tue 30 Apr, 2013 22:18
by John Doe
из модуля по return

Впрочем применение редкое, можно и скопипастить при необходимости

Re: GetMacroCopy

Posted: Wed 01 May, 2013 00:07
by John Doe
Реализован фильтр по нажатой клавише.
По Ctrl-NumLock считывается клавиша, и в списке остаются только макросы реагирующие на неё.
Учитываются "право/левостороннесть" модификаторов, и клавиши, заданные регэкспами.

Re: GetMacroCopy

Posted: Wed 01 May, 2013 05:37
by sToLp
— на нём макрос .fmlua

Re: GetMacroCopy

Posted: Wed 01 May, 2013 05:57
by Shmuel
sToLp wrote: — на нём макрос .fmlua
То, что на нём макрос .fmlua, не имеет значения. Любое сочетание, включающее /, даже / сам по себе, дают ту же ошибку.

Re: GetMacroCopy

Posted: Wed 01 May, 2013 10:08
by John Doe
Что-то я не пойму как же использовать слэш в регэкспе.
Даже экранированный он вызывает ошибку: regex.match("qwerty","\/")

Re: GetMacroCopy

Posted: Wed 01 May, 2013 10:44
by Shmuel
John Doe wrote:Что-то я не пойму как же использовать слэш в регэкспе.
Даже экранированный он вызывает ошибку: regex.match("qwerty","\/")
Недоэкранировали. Этот код даже не скомпилируется под Lua 5.2 или LuaJIT 2.0.

Re: GetMacroCopy

Posted: Wed 01 May, 2013 23:24
by John Doe
  • Исправлены ошибки (для баланса добавлены новые ))
  • Фильтр по файлам и по маскам, хоткеи пока от фонаря - CtrlAdd/CtrlSubtract
    Другие фильтры тоже добавить несложно.
  • Небольшой рефакторинг.
    Среди прочего: за форматирование списка отвечают функции formatMacro и formatEvent (в начале файла)
    Если у кого-то своё видение формата списка - легко исправить (не забудьте поделиться).
    Если будет востребовано, то в дальнейшем можно сделать переключение режимов, или подключение пользовательских режимов (из внешнего файла)
  • ShowMacros теперь принимает параметры, можно задать функцию, которая будет выполнена перед показом меню.
    Таким образом можно сразу задать нужный фильтр.

    В комплекте несколько макросов для области Common:
    - LCtrlShiftF11 - обычный список
    - LCtrlNumLock - фильтр по клавише
    - RCtrlNumLock - выбор фильтра (по файлу/по маске).