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

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

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

Post by John Doe » Mon 29 Apr, 2013 20:21

Особенности

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

Скрипт и функции всех макросов можно проверить никуда не устанавливая, через меню пользователя.
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 402 times

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

Re: GetMacroCopy

Post by John Doe » Wed 01 May, 2013 23:24

Latest post of the previous page:

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

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

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

Re: GetMacroCopy

Post by John Doe » Thu 02 May, 2013 00:00

Вместо "велосипедной" использовал ExpandKey из utils.lua.
Определена она несколько необычно, и при каждом вызове использует один и тот же upvalue-массив (для ускорения работы?), его же и возвращает.

В только что выложенной версии скрипта это не учитывалось, поэтому фильтрация по клавише могла работать неверно.
Исправил. Перезалил

Shmuel
Posts: 5924
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 233 times

Re: GetMacroCopy

Post by Shmuel » Thu 02 May, 2013 06:53

Если добавить макрос

Code: Select all

lm:post far.MacroAdd ("MACROAREA_SHELL", nil, "CtrlF3", "msgbox('added on the fly')")
запустить MacroBrowserLite и нажать F4 на данном макросе, получим ошибку:

Code: Select all

... MacroBrowserLite.lua:220: bad argument #1 to 'getinfo' (function or level expected)
после чего MacroBrowserLite вообще перестаёт запускаться.

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

Re: GetMacroCopy

Post by John Doe » Fri 03 May, 2013 01:54

- Исправлена эта и другие ошибки.
- Добавлены фильтры
- Изменились BreakKeys для фильтров

Code: Select all

 Info:
  • F3       - Краткая информация о макросе
  • Enter    - Открыть таблицу макроса в lua explorer

 Edit:
  • F4       - Открыть макрос в модальном редакторе
               и установить курсор на функцию action
  • AltF4    - Закрыть список и открыть макрос в редакторе

 Goto:
  • CtrlPgUp - Закрыть список и перейти к файлу с макросом

 Filters:
  • Tab       - список всех фильтров
  • Shift0    - Сбросить фильтр

  Активировать фильтр
  • Shift1    - по клавише (запрашивается интерактивно)
  • Shift2    - по файлу
  • Shift3    - по маске
  • Shift4    - по приоритету


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

Shmuel
Posts: 5924
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 233 times

Re: GetMacroCopy

Post by Shmuel » Fri 03 May, 2013 11:17

С помощью фильтра CtrlAltF или с помощью фильтра Shift1 делаем пустой список, после чего нажимаем Enter. Получаем ошибку:

Code: Select all

... MacroBrowserLite.lua:263: attempt to index local 'm' (a boolean value)
Ну и, как и раньше, после этого скрипт уже не запускается (точнее, ничего не выводит на экран).

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

Re: GetMacroCopy

Post by John Doe » Fri 03 May, 2013 11:46

Строки 353-355 исправил на

Code: Select all

    if item.action and pos~=0 and items[pos].macro 
                   and "break"==item.action(items[pos].macro) then break 
    end
Shmuel wrote:Ну и, как и раньше, после этого скрипт уже не запускается (точнее, ничего не выводит на экран).
Макрос действительно после этого не запускается.
Думаю что таково поведение LuaMacro.

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

Re: GetMacroCopy

Post by John Doe » Fri 03 May, 2013 12:19

Нет, это моя защита от вложенных вызовов. При ошибке флаг Show_isActive не обнуляется, и макрос считает, что он уже запущен. Не думаю что это можно изменить.

User avatar
HaRT
Moderator
Posts: 9162
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 175 times

Re: GetMacroCopy

Post by HaRT » Fri 03 May, 2013 12:41

John Doe wrote:

Code: Select all

Edit:
  • F4       - Открыть макрос в модальном редакторе
               и установить курсор на функцию action
  • AltF4    - Закрыть список и открыть макрос в редакторе

 Goto:
  • CtrlPgUp - Закрыть список и перейти к файлу с макросом
Это весьма похоже на назначение клавиш в истории просмотра/ редактирования в AltHistory, однако тут F4 и AltF4 поменяны местами. Не приведёт ли это к путанице и неудобствам? Учитывает ли автор эту не-/похожесть? Не лучше ли унифицировать или хотя бы дать пользователю возможность легко подстроить под себя?
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

Re: GetMacroCopy

Post by John Doe » Fri 03 May, 2013 12:50

Клавиши ещё будут меняться, предложения приветствуются.
Но привязываться к AltHistory не стоит.

В данном случае F4 и CtrlPgUp мне кажется на месте.
AltF4 же мне не особо нравится. Enter подошёл бы лучше, но он уже занят, и освободить не представляется возможным.

Менять местами F4 и AltF4 не хочу, мне кажется после F4 всё-таки ожидается возврат в меню.
Пока что сделаю параллельно с AltF4 еще и CtrlPgDn и CtrlTab (с тем же действием).

User avatar
HaRT
Moderator
Posts: 9162
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 175 times

Re: GetMacroCopy

Post by HaRT » Fri 03 May, 2013 13:16

John Doe wrote:Пока что сделаю параллельно с AltF4 еще и CtrlPgDn и CtrlTab (с тем же действием).
Лично для меня как для давнего и активного пользователя AltHistory существенная разница между (Alt)F4 и CtrlPgDn заключается в том, что первый не меняет директорию и текущий элемент активной панели, а второй как раз наоборот переходит к файлу перед тем, как открыть его на редактирование. Практика показывает, что такое разделение очень полезно, т.к. иногда надо одно, а иногда другое. Впрочем, за сценарии работы с макросами не поручусь, т.к. конкретно такой практики у меня нет.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5924
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 233 times

Re: GetMacroCopy

Post by Shmuel » Fri 03 May, 2013 13:53

John Doe wrote:Нет, это моя защита от вложенных вызовов. При ошибке флаг Show_isActive не обнуляется, и макрос считает, что он уже запущен. Не думаю что это можно изменить.
Можно, легко.

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

Re: GetMacroCopy

Post by John Doe » Fri 03 May, 2013 13:56

Подскажите

Shmuel
Posts: 5924
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 233 times

Re: GetMacroCopy

Post by Shmuel » Fri 03 May, 2013 14:00

pcall

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

Re: GetMacroCopy

Post by John Doe » Fri 03 May, 2013 14:13

В данном случае не уверен в необходимости.
Найденные вами проблемы - это баги, которые реально устранить на этапе тестирования.

User avatar
HaRT
Moderator
Posts: 9162
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 175 times

Re: GetMacroCopy

Post by HaRT » Fri 03 May, 2013 15:59

John Doe
Не упустили ли Вы из виду моё сообщение?:
HaRT wrote:Лично для меня как для давнего и активного пользователя AltHistory существенная разница между (Alt)F4 и CtrlPgDn заключается в том, что первый не меняет директорию и текущий элемент активной панели, а второй как раз наоборот переходит к файлу перед тем, как открыть его на редактирование. Практика показывает, что такое разделение очень полезно, т.к. иногда надо одно, а иногда другое. Впрочем, за сценарии работы с макросами не поручусь, т.к. конкретно такой практики у меня нет.
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

Re: GetMacroCopy

Post by John Doe » Fri 03 May, 2013 16:03

Из спортивного интереса сделал для CtrlPgDn переход к файлу.

gotar
Posts: 316
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 9 times

Re: GetMacroCopy

Post by gotar » Fri 03 May, 2013 16:52

John Doe, почему в конце Вашего макроса нет "return Show"?

Post Reply

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