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

Здесь выкладываются готовые к использованию макросы и скрипты.
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 659 times
Shmuel
Posts: 6820
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:Что-то я не пойму как же использовать слэш в регэкспе.
Даже экранированный он вызывает ошибку: regex.match("qwerty","\/")
Недоэкранировали. Этот код даже не скомпилируется под Lua 5.2 или LuaJIT 2.0.
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 »

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

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

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

В только что выложенной версии скрипта это не учитывалось, поэтому фильтрация по клавише могла работать неверно.
Исправил. Перезалил
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: GetMacroCopy

Post by Shmuel »

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

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: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: GetMacroCopy

Post by John Doe »

- Исправлена эта и другие ошибки.
- Добавлены фильтры
- Изменились 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: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: GetMacroCopy

Post by Shmuel »

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

Code: Select all

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

Строки 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: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: GetMacroCopy

Post by John Doe »

Нет, это моя защита от вложенных вызовов. При ошибке флаг Show_isActive не обнуляется, и макрос считает, что он уже запущен. Не думаю что это можно изменить.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: GetMacroCopy

Post by HaRT »

John Doe wrote:

Code: Select all

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

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

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

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

Менять местами F4 и AltF4 не хочу, мне кажется после F4 всё-таки ожидается возврат в меню.
Пока что сделаю параллельно с AltF4 еще и CtrlPgDn и CtrlTab (с тем же действием).
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: GetMacroCopy

Post by HaRT »

John Doe wrote:Пока что сделаю параллельно с AltF4 еще и CtrlPgDn и CtrlTab (с тем же действием).
Лично для меня как для давнего и активного пользователя AltHistory существенная разница между (Alt)F4 и CtrlPgDn заключается в том, что первый не меняет директорию и текущий элемент активной панели, а второй как раз наоборот переходит к файлу перед тем, как открыть его на редактирование. Практика показывает, что такое разделение очень полезно, т.к. иногда надо одно, а иногда другое. Впрочем, за сценарии работы с макросами не поручусь, т.к. конкретно такой практики у меня нет.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: GetMacroCopy

Post by Shmuel »

John Doe wrote:Нет, это моя защита от вложенных вызовов. При ошибке флаг Show_isActive не обнуляется, и макрос считает, что он уже запущен. Не думаю что это можно изменить.
Можно, легко.
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
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: GetMacroCopy

Post by Shmuel »

pcall
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 »

В данном случае не уверен в необходимости.
Найденные вами проблемы - это баги, которые реально устранить на этапе тестирования.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: GetMacroCopy

Post by HaRT »

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

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