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

Здесь выкладываются готовые к использованию макросы и скрипты.
Post Reply
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 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 658 times
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: GetMacroCopy

Post by Shmuel »

Latest post of the previous page:

John Doe wrote:Эту функцию добавил в процессе разбора работы MacroAdd.
Поскольку практической ценности она не не имеет, то совершенствовать бессмысленно.
Бессмысленно спорить без толку.
Если фича у утилиты есть - должна быть сделана, как положено.
Если она не нужна - удаляется.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: GetMacroCopy

Post by John Doe »

Фича не заявлена, считайте что её нет. В следующий раз удалю, или закомментирую.
Smitis wrote:А то неудобно каждый раз макросы исправлять.
А какие комбинации предпочитаете?
tstr
Posts: 557
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 20 times
Been thanked: 9 times

Re: GetMacroCopy

Post by tstr »

может быть уже пора сделать подобающее описание и опубликовать в "Macros & Scripts | Полезные макросы и скрипты" ?
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: GetMacroCopy

Post by Smitis »

John Doe wrote:А какие комбинации предпочитаете?
Функций слишком много и употребляются они не слишком часто. Себе я пока сделал через меню. А вообще, обычно для таких "редких" функций предпочитаю назначать какие-нибудь "труднонажимаемые" комбинации, типа CtrlAltShift-что-то
Во-вторых, планирую сделать сохранение пользовательских клавиш в базу.
А как менять в базе? Будет интерфейс для назначения макросов? Имхо, проще хранить в отдельном файле конфигурации и подгружать его через dofile/loadfile
Разум когда-нибудь победит.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: GetMacroCopy

Post by John Doe »

Shmuel wrote:Если фича у утилиты есть - должна быть сделана, как положено.
Учитывая изменение в апи есть смысл оставить.
Но чтобы совсем "как положено" - придётся исправлять позиционирование в меню, как-то так:
  1. local function focusable(item)
  2.  
  3.   return not (item.hidden or item.disable or item.separator)
  4.  
  5. end
  6.  
  7.  
  8.  
  9. ...
  10.  
  11.   local pos = Props.SelectIndex
  12.  
  13.   if pos and focusable(Items[pos]) then
  14.  
  15.     for i=pos,pos<1 and -1 or #Items do
  16.  
  17.       if focusable(Items[i]) then pos=i; break; end
  18.  
  19.     end
  20.  
  21.     for i=pos,1,-1 do
  22.  
  23.       if focusable(Items[i]) then pos=i; break; end
  24.  
  25.     end
  26.  
  27.     Props.SelectIndex = pos
  28.  
  29.   end
Без этого при удалении курсор скачет в начало списка.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: GetMacroCopy

Post by John Doe »

Smitis wrote:Функций слишком много и употребляются они не слишком часто. Себе я пока сделал через меню.
Функцию можно оставить одну, всё остальное доступно из списка макросов.
Smitis wrote:А как менять в базе? Будет интерфейс для назначения макросов? Имхо, проще хранить в отдельном файле конфигурации и подгружать его через dofile/loadfile
Проще для кого?
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: GetMacroCopy

Post by Smitis »

John Doe wrote:Проще для кого?
Всем
Разум когда-нибудь победит.
gotar
Posts: 412
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

Re: GetMacroCopy

Post by gotar »

John Doe wrote:Когда будет доступ к реальным макросам, а не их копиям, то можно будет доделать за компанию.
Чем Вас GetMacroById не устраивает? В таблице макроса еще интересный флажок есть - disabled, но что он означает я не разобрался
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Macro Browser lite — обозреватель макросов

Post by John Doe »

Добрался до полноразмерной клавиатуры и обнаружил баг: вместо CtrlPgUp отлавливался PgUp.
Не зря в соседней теме просят схему для колорера с подсветкой кириллицы ))

В шапке исправленная версия.
Другие изменения:
- после CtrlR восстанавливается фильтр
- учтены изменения в far.MacroAdd/Delete
- добавлены (точнее продублированы) хоткеи
Common: Break (CtrlBreak,CtrlScrollLock) = RCtrlShift9 = последний фильтр
В списке: Pause = 0 = сброс фильтра

P.S.
Макрос для редактора какой-то совсем молчаливый.
Надо будет сделать хотя бы так:

Code: Select all

Macro { description="Reload macros";
  area="Editor";  key="CtrlEnter CtrlR"; filemask="*.lua";  priority=40;
  action=function() if far.MacroLoadAll() then msgbox("","Macros reloaded") end end;
}
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: GetMacroCopy

Post by John Doe »

Smitis wrote:
John Doe wrote:Проще для кого?
Всем
Не знаю как всем, а мне уж точно проще в базе.

Прилагаю proof of concept
Режим назначение клавиш активируется из списка, по нажатию CtrlShiftF11

Для минимальной реализации понадобилось буквально несколько строк:
Что характерно: переопределена только функция Macro, а определения всех макросов нетронуты.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

* Утилита переименована в "Macro Browser alt."
* Небольшие внутренние и косметические изменения.
* Спецверсия lua explorer больше не идёт в комплекте, необходимо поставить отдельно.
(будет работать и без, но часть функций зависит от lua explorer)
* Используются новые средства отладки lua explorer.

О последнем подробнее:

Как известно, состояния макросов могут сохраняться между вызовами (macroapi_manual.chm::/14.html)
Понятно, что сохраняются глобальные переменные, но кроме того:
- environment (окружение), т.е. значения переменных, объявленных без ключевого слова local
- upvalues - переменные определённые с ключевым словом local, но за пределами использующих их функций.
Оба 'вида' переменных доступны для просмотра и редактирования (CtrlUp/CtrlDown)

Примечание: если макрос не использует upvalues, и не определяет переменные окружения, то по нажатию этих клавиш ничего не произойдёт.
А для экспериментов можно отфильтровать такие макросы пользовательским фильтром (RCtrlShift8):
- с непустым окружением: action and next(getfenv(action))
- использующие upvalues: action and debug.getupvalue(action,1)

Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

Для показа хелпа по F1 используется функция far.Show. Вместо неё лучше применить сочетание far.MakeMenuItems и far.Menu, что позволит назначить произвольные тексты для верхней и нижней рамок.
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

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

Post by AleXH »

John Doe
Предлагаю убрать привязку к маске файлов и области действия, так как перезагрузка макросов может потребоваться и в иных случаях.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Вы не уточнили о каком макросе речь.
  • В списке макросов CtrlR вызывает их безусловную перезагрузку.
  • В редакторе макрос привязан к расширению, чтобы избежать потенциального конфликта с другими пользовательскими макросами (комбинация для вызова короткая).
    И лично вместо этого макроса использую более продвинутый http://forum.farmanager.com/viewtopic.php?f=60&t=8008
  • Конечно можно добавить макрос, вызывающий безусловную перезагрузку во всех областях, и выбрать для него более сложную комбинацию вызова.
    Но имеет ли это прямое отношение к обсуждаемому скрипту? (Если считаете что да, то предлагайте кнопкосочетание)
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

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

Post by AleXH »

В списке макросов CtrlR вызывает их безусловную перезагрузку
Уточню - лишь тех, что в списке?
В редакторе макрос привязан к расширению, чтобы избежать потенциального конфликта с другими пользовательскими макросами (комбинация для вызова короткая)
Не понял каким образом фильтр по расширению *.lua может помочь, когда практически все макросы на lua?

Вопрос. Предполагается ли поддержка MoonScript макросов в сабже и в Macro Check на том же уровне, что и макросов на lua?

Есть ли поддержка в сабже следующих ситуаций?
1. Редактируем макрос для панелей на муне, хотим перезагрузить его, переключиться в панели (не закрывая редактор), протестировать результат.
2. Отредактировали несколько макросов, хотим перезагрузить все макросы (весь движок) без перезапуска FAR.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

AleXH wrote:Уточню - лишь тех, кто в списке?
Так невозможно. Перегружаются все.
AleXH wrote:Не понял каким образом фильтр по расширению *.lua может помочь, когда практически все макросы на lua?
Вы ведь не только *.lua редактируете, но и *.cmd,*.txt и т.д. Для них то же сочетание клавиш может выполнять совсем другое действие.
AleXH wrote:Предполагается ли поддержка MoonScript макросов в сабже и в Macro Check на том же уровне, что и макросов на lua?
А разве для них нужна особая поддержка?
AleXH wrote:Есть ли поддержка в сабже следующих ситуаций?
1. Редактируем макрос для панелей на муне, хотим перезагрузить его, переключиться в панели (не закрывая редактора), протестировать результат.
2. Отредактировали несколько макросов, хотим перезагрузить все макросы (весь движок) без перезапуска FAR.
Сабж к требуемой вами функциональности имеет весьма косвенное отношение.
Вот собственно вся поддержка:
  1. Macro { description="Reload macros"; -- see advanced version here: http://forum.farmanager.com/viewtopic.php?f=60&t=8008
  2.  
  3.   area="Editor";  key="CtrlEnter CtrlR"; filemask="*.lua,*.moon";  priority=40;
  4.  
  5.   action=function() if far.MacroLoadAll() then far.Message("Macros reloaded","") end end;
  6.  
  7. }
Это совершенно независимый от основного скрипта макрос.
Всё что он делает, это полностью перезагружает макросы командой far.MacroLoadAll().
Post Reply

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