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

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Особенности

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

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

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

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

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

Attachments
MacroBrowserAlt.7z
r1.3
(13.06 KiB) Downloaded 654 times
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Latest post of the previous page:

Такая возможность предусмотрена пользовательским фильтром, доступным из макробраузера по клавише 0 (как и сказано в справке).
Или же макробраузер можно сразу открыть отфильтрованным, используя штатный макрос на RCtrlNumLock-0.

В открывшемся диалоге нужно ввести условие отбора макросов.
В данном случае одной строкой вводить не очень удобно, но тем не менее:

Code: Select all

return key and not keyregex and 
(function(keys)
  for k in keys:gmatch"%S+" do
    k = k:lower():gsub("^lctrl","ctrl"):gsub("^lalt","alt"):gsub("ctrllalt","ctrlalt")
    if not far.NameToInputRecord(k) and not k:match"%w.?[-:]." then return true end
  end
end)(key)
(макросы MacroEx исключаются из списка одним регэкспом %w.?[-:]. для простоты, но можно сделать и точнее)

Когда-нибудь добавлю этот фильтр в поставку.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

John Doe wrote: Sat 24 Nov, 2018 14:59 Такая возможность предусмотрена пользовательским фильтром
Вот, спасибо! Так стало на много удобнее.
штатный макрос на RCtrlNumLock-0
Увы, запустить этот макрос у меня ни как не получилось. Уж и ключ другой подставлял, и priority убирал и увеличивал...
В открывшемся диалоге нужно ввести условие отбора макросов.
Хорошо, что MBA и между сессиями Far`а запоминает введённое!
Но, кстати, неплохо бы к этому и без того не простому условию добавить ещё и задание не выводить макросы, которым совсем не назначены ключи. Но и сделать бы их вывод отдельным.
Когда-нибудь добавлю этот фильтр в поставку.
Было бы здорово.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

sToLp wrote: Sat 24 Nov, 2018 21:09 Увы, запустить этот макрос у меня ни как не получилось. Уж и ключ другой подставлял, и priority убирал и увеличивал...
Так свой сделайте по образцу.
sToLp wrote: Sat 24 Nov, 2018 21:09 Хорошо, что MBA и между сессиями Far`а запоминает введённое!
В макросе если указать в параметрах строку-фильтр, то список будет сразу открываться, без запроса.
sToLp wrote: Sat 24 Nov, 2018 21:09 добавить ещё и задание не выводить макросы, которым совсем не назначены ключи. Но и сделать бы их вывод отдельным.
Добавьте, это, и что угодно. Именно для этого и задумывался пользовательский фильтр.

Можно макросом, можно в меню пользователя, см. описание и примеры из комплекта.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

John Doe wrote: Sun 25 Nov, 2018 08:06
Спасибо за рекомендации! Прислушался к ним и собрал , обеспечивающие вывод именно тех списков, которые в данное время мне очень нужны.

upd: в макросе с description="mb&a: макросы с невалидными непустыми ключами и без '_' в начале (поJD) CtrlP"; сделана правка по рекомендациям, приведённым John Doe в постах ниже.

upd2: сделана ещё одна правка — вместо k:match('none' or '') в одном макросе указано key=='none', а в другом — указано key~='none' и переставлено на более подходящее место.
Last edited by sToLp on Wed 28 Nov, 2018 17:15, edited 2 times in total.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Отлично.

В первом макросе я бы рекомендовал добавленные вами проверки делать до вызова функции.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

John Doe wrote: Sun 25 Nov, 2018 13:41добавленные проверки делать до вызова функции
Проверки на пустые ключи и на начинающиеся со знака подчёркивания поставил перед not far.NameToInputRecord(k), но на результате работы Macro Browser alt. различия не увидел. Или я чего-то не досмотрел?

Поясните, пожалуйста, чем такое расположение проверок предпочтительнее?
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

sToLp wrote: Sun 25 Nov, 2018 16:32 чем такое расположение проверок предпочтительнее
У функции в этом случае получится более узкая задача.
Впоследствии легче будет исправлять и изменять код.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Уточнение: функция в данном случае содержит цикл, где разбирает строку на отдельные ключи.
И там уже бесполезно сравнивать с пустой строкой, такое условие никогда не выполнится (поэтому это необходимо сделать раньше).
"none" тоже врядли стоит искать в строке где есть нескольких ключей (поэтому тоже можно проверять раньше).
А вот что касается ключей, начинающихся с "_", то тут зависит от того, могут ли они оказаться в одной строке с другими: если могут, то проверку надо оставить в цикле.

Но правильнее проверять так: k:match"^_." или (k:sub(1,1)=="_" and k:len()>1).
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

John Doe,
Большое спасибо за разъяснение и примеры! С интересом опробовал всё, что Вы посоветовали.
правильнее проверять так: k:match"^_." или (k:sub(1,1)=="_" and k:len()>1).
Вот теперь я увидел и практический результат тоже. Замена поставленного после функции k:match'_' на любой из приведённых Вами примеров в моём случае даёт добавку в выводимый MBA перечень двух макросов. С ключами "AltShift/ cmp_winmerge" и "префиксы11_ _". В прежнем варианте эти макросы в перечень не попадали.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

sToLp wrote: Sun 25 Nov, 2018 12:05 сделана правка по рекомендациям, приведённым John Doe в постах ниже.
Не доделана правка. Вот это работать не может: if not k:match('none' or '')
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

John Doe wrote: Mon 26 Nov, 2018 13:33Вот это работать не может: if not k:match('none' or '')
Спасибо! Поправил и это. И, вроде бы, теперь правильно поправил.
Post Reply

Return to “Полезные макросы и скрипты”