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

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

Macro Browser alt. r1

Postby John Doe » Sun 29 Jun, 2014 21:43

Latest post of the previous page:

Обновление

  • Исправлены найденые ошибки
    Среди прочего: фильтр по макрообласти больше не срабатывает на части слова (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, то его можно использовать в качестве модуля (для собственных макросов, или для меню пользователя:
Скачать можно из шапки.

User avatar
Wave
Posts: 1693
Joined: Thu 04 Aug, 2005 18:47
Location: Харьков, Украина
Has thanked: 2 times
Been thanked: 9 times
Contact:

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

Postby Wave » Mon 30 Jun, 2014 17:11

Т.е. его можно кинуть в Profile\Macros\modules и вызывать из FarMenu.ini и это ничем не будет отличаться от Profile\Macros\scripts и вызова по хоткеям? Смысл кидать к скриптам только в том, чтобы откуда угодно можно было это всё вызвать?
Пользуюсь ФАРом больше 15 лет © собирательный.

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

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

Postby John Doe » Mon 30 Jun, 2014 17:23

Wave wrote:Смысл кидать к скриптам только в том, чтобы откуда угодно можно было это всё вызвать?
Да.
Вообще кидать к скриптам имеет смысл, если вам не мешают все приложенные макросы.
Если же мешают, то можно положить в modules, и назначить свои макросы, выбрав только те действия, что вам нужны.

User avatar
Wave
Posts: 1693
Joined: Thu 04 Aug, 2005 18:47
Location: Харьков, Украина
Has thanked: 2 times
Been thanked: 9 times
Contact:

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

Postby Wave » Mon 30 Jun, 2014 20:10

Как правильно тогда сделать что-то вроде этого? Ругань на то, что getCurFile — nil
require"MacroBrowserAlt";
browseMacros("File",getCurFile())

(У меня большой (и очень примитивный, с редактируемым вручную меню) макрос, который в редакторе даёт аналог FarMenu.ini)
Last edited by Wave on Mon 30 Jun, 2014 20:13, edited 1 time in total.
Пользуюсь ФАРом больше 15 лет © собирательный.

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

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

Postby John Doe » Mon 30 Jun, 2014 20:13

FarMenu.ini прилагается, скопируйте оттуда.

User avatar
Wave
Posts: 1693
Joined: Thu 04 Aug, 2005 18:47
Location: Харьков, Украина
Has thanked: 2 times
Been thanked: 9 times
Contact:

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

Postby Wave » Mon 30 Jun, 2014 20:19

require"MacroBrowserAlt"("File",APanel.Current) ?

Понял, спасибо.

require"MacroBrowserAlt"("File",Editor.FileName);
Пользуюсь ФАРом больше 15 лет © собирательный.

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

Macro Browser alt. r1.1

Postby John Doe » Tue 01 Jul, 2014 10:24

Небольшое обновление
  • Исправлено позиционирование в макросах Moonscript
  • Удалена поддержка события CommandLine
В шапке.

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

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

Postby AleXH » Tue 01 Jul, 2014 11:25

John Doe wrote:Source of the post
Ниже предлагается простое централизованное решение, позволяющее отключить любой сторонний макрос, или переопределить его клавиатурную комбинацию.
Прототип обсуждался ранее, а теперь всё это можно делать в MacroBrowser'е.

  • Del — запретить/разрешить макрос. Запрещённый макрос отображается серым.
  • ShiftF4 — (пере)назначить сочетание клавиш.
    В диалоге можно указать несколько клавиш или регэксп. Пустая строка отменяет переназначение.
    После этого все макросы перезагружаются, чтобы изменения вступили в силу.
    Переназначенные макросы индицируются звёздочкой перед клавишей.
Все настройки (состояние запрета и переназначенные клавиши) сохраняются в базе, и загружаются при запуске фара.
Также поддерживается альтернативный способ хранения настроек, в файле %FARPROFILE%\Macros\scripts\bindings.

Всё что требуется для работы перечисленных функций — это подключить в _macroinit.lua модуль rebind: require"rebind".
На практике полезно дополнительно настроить модуль:

Об идентификаторах макросов:

В MacroBrowser alt. уже встроенна поддержка модуля rebind.
Дополнительно к перечисленным выше комбинациям клавиш также расширяется дополнительное меню фильтров Misc,
добавляются такие пункты:

John Doe, имхо вместо DEL лучше использовать Space - более ожидаемо и не так стрёмно, но да, с помощью сабжа можно (наверное) и переназначить :)

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

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

Postby John Doe » Tue 01 Jul, 2014 11:29

Нет, с помощью сабжа не получится переназначить, т.к. это не макрос, а BreakKey.
В строке 830 можно исправить/добавить.

Или можно добавить макрос специально для диалога MacroBrowser, Menu.Id=="C5CB672A-104B-4402-B501-B31FC34714D0"

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

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

Postby John Doe » Tue 01 Jul, 2014 11:40

AleXH wrote:Space - [...] не так стрёмно
Психологический фактор я как-то не предусмотрел )
И кстати для макросов, добавленных с помощью far.MacroAdd, клавиша Del предназначена выполнять удаление.

Можно попробовать на примере:
    Добавить: lua:far.MacroAdd ("MACROAREA_SHELL", nil, "CtrlF3", "msgbox('added on the fly')")
    Отфильтровать: меню Misc (RCtrlShift9) \ MCTL_ADDMACRO
    Удалить: Del
Update:
Ага, лучше пока не пробовать, тут какая-то ошибка в LuaFAR:

Code: Select all

bad argument #1 to 'MacroDelete' (FarAddMacroData expected, got userdata)

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

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

Postby AleXH » Tue 01 Jul, 2014 14:56

  1. {BreakKey="DELETE",           itemAct=delMacro},

delMacro как-то сурово, disableMacro шугает меньше :)

И хорошо бы, чтобы между вызовами сабжа при отображении списка макросов, запоминался макрос на котором стоит курсор.

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

Macro Browser alt. — r1.2

Postby John Doe » Wed 02 Jul, 2014 15:02

Небольшое обновление
  • Убрана неработоспособная возможность удаления MCTL_ADDMACRO-макросов.
  • Добавлена новая команда (в списке макросов) CtrlShiftR — перезагрузка плагина LuaMacro
  • rebind: редактор при вставке шаблона (CtrlShiftF4) теперь открывается в utf-8
  • Косметика
  • Минимальная требуемая версия фара теперь 3971
В шапке.

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

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

Postby John Doe » Wed 02 Jul, 2014 19:14

AleXH wrote:И хорошо бы, чтобы между вызовами сабжа при отображении списка макросов, запоминался макрос на котором стоит курсор.
Как-то не думал, что это может быть полезно...

Сценарий использования приведёте?

P.S.
Для себя в любом случае можете исправить.
Найти строку local pos,bk и перенести её до определения local function browseMacros(flt,...)

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

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

Postby AleXH » Wed 02 Jul, 2014 21:04

Предлагаю во все дескрипшены добавить префикс MBA:, например description="MBA: Reload macros"

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

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

Postby John Doe » Wed 02 Jul, 2014 22:20

ok

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

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

Postby AleXH » Wed 02 Jul, 2014 23:08

MBA: list macros: by priority [choice]
MBA: list macros: by mask [choice]
MBA: list event handlers: by group [choice]
":" после macros, handlers лишнее.

Предлагаю к хелпу добавить хелп по ребинду.

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

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

Postby John Doe » Thu 03 Jul, 2014 10:04

John Doe wrote:Найти строку local pos,bk и перенести её до определения local function browseMacros(flt,...)
Есть вариант получше, поставить там такой обработчик:
  1. local Pos = {}
  2. Event { description="MBA internal (preserve cursor position between launches)";
  3.   group="DialogEvent";
  4.   condition=function(Event,param)
  5.     if Event==F.DE_DLGPROCEND and (param.Msg==F.DN_INITDIALOG or param.Msg==F.DN_CLOSE) then
  6.       local info = param.hDlg:send(F.DM_GETDIALOGINFO)
  7.       return info and info.Id==MBid
  8.     end
  9.   end;
  10.   action=function(Event,param)
  11.     if param.Msg==F.DN_INITDIALOG then
  12.       param.hDlg:send(F.DM_LISTSETCURPOS,1,Pos)
  13.     else --param.Msg==F.DN_CLOSE
  14.       Pos = param.hDlg:send(F.DM_LISTGETCURPOS)
  15.     end
  16.   end;
  17. }

AleXH wrote:":" после macros, handlers лишнее.
Почему?


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

Who is online

Users browsing this forum: No registered users and 2 guests