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

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

Re: GetMacroCopy

Post by John Doe » Mon 06 May, 2013 20:33

Latest post of the previous page:

Shmuel wrote:Если фича у утилиты есть - должна быть сделана, как положено.
Учитывая изменение в апи есть смысл оставить.
Но чтобы совсем "как положено" - придётся исправлять позиционирование в меню, как-то так:
  1. local function focusable(item)
  2.   return not (item.hidden or item.disable or item.separator)
  3. end
  4.  
  5. ...
  6.   local pos = Props.SelectIndex
  7.   if pos and focusable(Items[pos]) then
  8.     for i=pos,pos<1 and -1 or #Items do
  9.       if focusable(Items[i]) then pos=i; break; end
  10.     end
  11.     for i=pos,1,-1 do
  12.       if focusable(Items[i]) then pos=i; break; end
  13.     end
  14.     Props.SelectIndex = pos
  15.   end
Без этого при удалении курсор скачет в начало списка.

User avatar
John Doe
Бюрократ
Posts: 11143
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 73 times

Re: GetMacroCopy

Post by John Doe » Mon 06 May, 2013 20:41

Smitis wrote:Функций слишком много и употребляются они не слишком часто. Себе я пока сделал через меню.
Функцию можно оставить одну, всё остальное доступно из списка макросов.
Smitis wrote:А как менять в базе? Будет интерфейс для назначения макросов? Имхо, проще хранить в отдельном файле конфигурации и подгружать его через dofile/loadfile
Проще для кого?

Smitis
Posts: 1455
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 13 times
Been thanked: 23 times
Contact:

Re: GetMacroCopy

Post by Smitis » Mon 06 May, 2013 20:53

John Doe wrote:Проще для кого?
Всем
Разум когда-нибудь победит.

gotar
Posts: 293
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 8 times

Re: GetMacroCopy

Post by gotar » Mon 06 May, 2013 23:07

John Doe wrote:Когда будет доступ к реальным макросам, а не их копиям, то можно будет доделать за компанию.
Чем Вас GetMacroById не устраивает? В таблице макроса еще интересный флажок есть - disabled, но что он означает я не разобрался

User avatar
John Doe
Бюрократ
Posts: 11143
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 73 times

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

Post by John Doe » Tue 07 May, 2013 09:24

Добрался до полноразмерной клавиатуры и обнаружил баг: вместо 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: 11143
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 73 times

Re: GetMacroCopy

Post by John Doe » Tue 07 May, 2013 23:01

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

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

Для минимальной реализации понадобилось буквально несколько строк:
Что характерно: переопределена только функция Macro, а определения всех макросов нетронуты.

User avatar
John Doe
Бюрократ
Posts: 11143
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 73 times

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

Post by John Doe » Fri 17 May, 2013 22:22

* Утилита переименована в "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: 5166
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Sat 18 May, 2013 06:03

Для показа хелпа по 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 » Fri 27 Jun, 2014 05:33

John Doe
Предлагаю убрать привязку к маске файлов и области действия, так как перезагрузка макросов может потребоваться и в иных случаях.

User avatar
John Doe
Бюрократ
Posts: 11143
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 73 times

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

Post by John Doe » Fri 27 Jun, 2014 10:18

Вы не уточнили о каком макросе речь.
  • В списке макросов CtrlR вызывает их безусловную перезагрузку.
  • В редакторе макрос привязан к расширению, чтобы избежать потенциального конфликта с другими пользовательскими макросами (комбинация для вызова короткая).
    И лично вместо этого макроса использую более продвинутый 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 » Fri 27 Jun, 2014 14:19

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

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

Есть ли поддержка в сабже следующих ситуаций?
1. Редактируем макрос для панелей на муне, хотим перезагрузить его, переключиться в панели (не закрывая редактор), протестировать результат.
2. Отредактировали несколько макросов, хотим перезагрузить все макросы (весь движок) без перезапуска FAR.

User avatar
John Doe
Бюрократ
Posts: 11143
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 73 times

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

Post by John Doe » Fri 27 Jun, 2014 14:31

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.   area="Editor";  key="CtrlEnter CtrlR"; filemask="*.lua,*.moon";  priority=40;
  3.   action=function() if far.MacroLoadAll() then far.Message("Macros reloaded","") end end;
  4. }
Это совершенно независимый от основного скрипта макрос.
Всё что он делает, это полностью перезагружает макросы командой far.MacroLoadAll().

AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

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

Post by AleXH » Fri 27 Jun, 2014 14:42

Сабж к требуемой вами функциональности имеет весьма косвенное отношение.
Вот собственно вся поддержка:
Да, я так себе и сделал - добавил маску *.moon.

А что насчёт Macro Check - там не будет никаких артефактов от добавления *.moon?

В панелях вызываю сабж - F11 - Macro Browser - list autostart macros, получаю

User avatar
John Doe
Бюрократ
Posts: 11143
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 73 times

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

Post by John Doe » Fri 27 Jun, 2014 14:47

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

Что такое Macro Check?

AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

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

Post by AleXH » Fri 27 Jun, 2014 14:55

Macro_Check_Reload_Execute.lua

User avatar
John Doe
Бюрократ
Posts: 11143
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 73 times

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

Post by John Doe » Fri 27 Jun, 2014 14:59

AleXH wrote:Macro_Check_Reload_Execute.lua
Для него есть отдельная тема.
Вкратце: добавить "*.moon" просто так недостаточно.
В панелях вызываю сабж - F11 - Macro Browser - list autostart macros, получаю [...]
Связано с изменением способа хранения флагов в плагине LuaMacro.
У себя давно исправил.

User avatar
John Doe
Бюрократ
Posts: 11143
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 73 times

Macro Browser alt. r1

Post by John Doe » Sun 29 Jun, 2014 21:43

Обновление
  • Исправлены найденые ошибки
    Среди прочего: фильтр по макрообласти больше не срабатывает на части слова (Shell ≠ ShellAutoCompletion)
  • Адаптация к изменениям в плагине LuaMacro
    (например поле flags стало набором флагов, а для internal-макросов теперь не верно priority==200)
    Поддержка moonscript-макросов (также см. в новом дополнительном подменю фильтров Misc)
  • Комбинации клавиш приведены в соответствие со штатной утилитой mbrowser, недостающие функции — добавлены
    • Действия клавиш F4/Alt-F4 поменялись местами.
    • Клавиша Ctrl-H для переключения режима показа только активных макросов, т.е текущая макрообласть + общие.
      При этом Common-макросы в отличии от mbrowser не помечаются галкой (неважно).
    • Повторные нажатия клавиш сортировки (Ctrl-F1..F12) переключает между прямым и обратным порядком.
    • В качестве критерия сортировки по макрообласти используется символьное представление, а не строка.
    • Информация о макросе отображаемая по F3 соответствует той, что отображает mbrowser.
      Кроме того: •длинные значения не съезжают (можно прокрутить Alt-стрелками), •в заголовке отображается тип макроса (Macro/Internal/MCTL_ADDMACRO), •неприменимые для данного типа макроса поля помечаются как n/a.
    • Enter служит для запуска макроса. В отличии от mbrowser не производится никаких проверок на соответствие макрообласти, истинность condition и пр. (Предполагается что пользователь знает чего хочет)
      Возможно запустить даже обработчики событий.
  • Изменения в комбинациях клавиш и косметические изменения
    • Просмотр таблицы макроса переехал на клавишу Ctrl-PgDn (Enter занят).
    • По нажатию 3 в списке остаются только макросы, определённые в том же файле, что и макрос под курсором.
      А комбинация Ctrl-3 позволяет выбрать файл для фильтрации из списка.
    • Сброс/восстановление фильтра теперь выполняется одной клавишей — Backspace (последний использованный фильтр запоминается между вызовами в пределах текущей сессии и в любой момент может быть восстановлен).
    • Пользовательский фильтр переехал на 0.
    • Пользовательская сортировка теперь переключается по Ctrl-F10.
      Ctrl-F11 служит для того чтобы изменить выражение, задающее критерий.
      Упрощён способ задания выражения для пользовательской сортировки, например:
    • Косметические изменения в строке заголовка.
    • Возможность изменять ширину столбца с названиями клавиш (Ctrl-стрелки).
  • Новое
    • Разные полезные дополнительные фильтры теперь собраны в подменю Misc, доступном по нажатию 9 (или из списка по ~, а также из макросов).
    • Экспериментально: при сортировке по имени файла (Ctrl-F6) производится группировка макросов в секции по имени файла.
  • Изменения в макросах
    • "Интерактивная" настройка комбинаций собственных макросов удалена (скоро будет rebind, работающий не только для собственных).
    • Приоритет уменьшен до 30, чтобы устранить потенциальный конфликт с Common-макросами пользователя.
      (Возможно есть смысл убрать клавиши из всех определений, чтобы пользователь назначил только те, что ему нужны)
    • Добавлено несколько макросов, без шорткатов (скоро появится возможность назначить клавиши интерактивно, а пока можно просто изменить поле keys).
    • Скрипт и функции всех макросов можно проверить никуда не устанавливая, через меню пользователя.
      FarMenu.ini прилагается .
    • Если положить MacroBrowserAlt.lua в папку Macros\modules, то его можно использовать в качестве модуля (для собственных макросов, или для меню пользователя:
Скачать можно из шапки.

Post Reply

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