Page 5 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

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


Re: GetMacroCopy

Posted: Mon 06 May, 2013 17:57
by Shmuel

Latest post of the previous page:

John Doe wrote:Эту функцию добавил в процессе разбора работы MacroAdd.
Поскольку практической ценности она не не имеет, то совершенствовать бессмысленно.
Бессмысленно спорить без толку.
Если фича у утилиты есть - должна быть сделана, как положено.
Если она не нужна - удаляется.

Re: GetMacroCopy

Posted: Mon 06 May, 2013 18:01
by John Doe
Фича не заявлена, считайте что её нет. В следующий раз удалю, или закомментирую.
Smitis wrote:А то неудобно каждый раз макросы исправлять.
А какие комбинации предпочитаете?

Re: GetMacroCopy

Posted: Mon 06 May, 2013 18:09
by tstr
может быть уже пора сделать подобающее описание и опубликовать в "Macros & Scripts | Полезные макросы и скрипты" ?

Re: GetMacroCopy

Posted: Mon 06 May, 2013 19:18
by Smitis
John Doe wrote:А какие комбинации предпочитаете?
Функций слишком много и употребляются они не слишком часто. Себе я пока сделал через меню. А вообще, обычно для таких "редких" функций предпочитаю назначать какие-нибудь "труднонажимаемые" комбинации, типа CtrlAltShift-что-то
Во-вторых, планирую сделать сохранение пользовательских клавиш в базу.
А как менять в базе? Будет интерфейс для назначения макросов? Имхо, проще хранить в отдельном файле конфигурации и подгружать его через dofile/loadfile

Re: GetMacroCopy

Posted: Mon 06 May, 2013 20:33
by John Doe
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
Без этого при удалении курсор скачет в начало списка.

Re: GetMacroCopy

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

Re: GetMacroCopy

Posted: Mon 06 May, 2013 20:53
by Smitis
John Doe wrote:Проще для кого?
Всем

Re: GetMacroCopy

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

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

Posted: Tue 07 May, 2013 09:24
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;
}

Re: GetMacroCopy

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

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

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

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

Posted: Fri 17 May, 2013 22:22
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)


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

Posted: Sat 18 May, 2013 06:03
by Shmuel
Для показа хелпа по F1 используется функция far.Show. Вместо неё лучше применить сочетание far.MakeMenuItems и far.Menu, что позволит назначить произвольные тексты для верхней и нижней рамок.

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

Posted: Fri 27 Jun, 2014 05:33
by AleXH
John Doe
Предлагаю убрать привязку к маске файлов и области действия, так как перезагрузка макросов может потребоваться и в иных случаях.

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

Posted: Fri 27 Jun, 2014 10:18
by John Doe
Вы не уточнили о каком макросе речь.
  • В списке макросов CtrlR вызывает их безусловную перезагрузку.
  • В редакторе макрос привязан к расширению, чтобы избежать потенциального конфликта с другими пользовательскими макросами (комбинация для вызова короткая).
    И лично вместо этого макроса использую более продвинутый http://forum.farmanager.com/viewtopic.php?f=60&t=8008
  • Конечно можно добавить макрос, вызывающий безусловную перезагрузку во всех областях, и выбрать для него более сложную комбинацию вызова.
    Но имеет ли это прямое отношение к обсуждаемому скрипту? (Если считаете что да, то предлагайте кнопкосочетание)

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

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

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

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

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

Posted: Fri 27 Jun, 2014 14:31
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.   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().