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

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 12538
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 240 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: 12538
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 240 times

Re: Re:

Post by John Doe » Sun 05 May, 2013 20:53

Latest post of the previous page:

Smitis
Ok

HaRT wrote:Если это возможно, было бы здорово рисовать звёздочку при тех макросах, которые были изменены, но ещё не перегружены.
Невозможно определить изменённые.
Можно найти файлы изменённые уже после открытия утилиты, но это ничего нам не скажет о том, какие макросы в них менялись (и менялись ли вообще).
Даже если извратится ещё больше, и всё-таки вычислить эти макросы, то это всё равно не значит, что изменения не вступили в силу, потому что информации о том когда на самом деле перегружались макросы - нет.

Я например вообще предпочитаю перезагружать их в редакторе (макрос в комплекте).

P.S.
Выложенная версия содержит ошибку, проявляющуюся при пустом списке.
Исправлено ещё вчера, выложу как только протестирую внесённые с тех пор изменения.

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

Post by John Doe » Mon 06 May, 2013 14:22

  • Новая команда: восстановить последний (Last) использованный фильтр.
    Хоткей: 9 (или новый макрос на RCtrlShift9)
  • Пользовательский (Custom) фильтр, задаваемый выражением lua
    В выражении доступны идентификаторы полей таблицы макроса и глобальные идентификаторы.
    Например:
    Хоткей: 8 (или новый макрос на RCtrlShift8)
    Пользовательские выражения выполняются через pcall, поэтому ошибки не приводят к краху
    Также применил защищённые вызовы в других опасных местах
  • Пользовательский (Custom) режим сортировки списка, задаваемый выражением lua
    В выражении доступны таблицы сравниваемых макросов, в виде идентификаторов a и b, и глобальные идентификаторы
    Например:
  • Сортировка:
    - текущий режим отображается в заголовке
    - при сортировке не сбрасывается фильтр
    - хоткеи: Ctrl-F1..F7,F12
  • В скрипте используется модифицированная версия lua explorer
    Необходимо наличие в Macros\modules
    Для удобства прилагаю его и здесь.
    Макрос для независимого вызова Lua Explorer назначен на CtrlShiftF12
  • По хоткею AltF3 открывется окружение функции action
  • Макросы:
    В первом параметре функции Show указывается критерий фильтрации
    Он задаётся строкой (доступны: list Area File Mask Priority Flags Events Custom Last)
    Вторым параметром-строкой указывается значение фильтра (если не указать - запрашивается интерактивно).
    Пример:
    Показать макросы с непустым окружением: Show("Custom","next(getfenv(action))")
    (например может быть полезно для поиска необъявленных идентификаторов)

    Другие примеры см. в прилагаемых макросах.
    Также добавлено 2 макроса RCtrlShift8 и RCtrlShift9
P.S.
Есть ещё одна незаявленная бесполезная функция:
Макросы добавленные через far.AddMacro можно удалить по Del


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

Re: GetMacroCopy

Post by Shmuel » Mon 06 May, 2013 14:41

Запускаем и нажимаем 0.

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

Re: GetMacroCopy

Post by John Doe » Mon 06 May, 2013 14:57

Спасибо, исправил.

Denis
Posts: 1421
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 8 times
Been thanked: 2 times

Re: GetMacroCopy

Post by Denis » Mon 06 May, 2013 14:57

А как в новой версии вызывать CtrlShiftF12?

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

Re: GetMacroCopy

Post by John Doe » Mon 06 May, 2013 15:10

Code: Select all

Macro { description = "Lua Explorer";
  area="Common"; key="CtrlShiftF12"; action=function()
    lua_explorer(_G,'_G')
  end
}
P.S.
Добавил макрос к файлу

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

Re: GetMacroCopy

Post by Shmuel » Mon 06 May, 2013 15:15

С какого-то перепуга ваша (уже обновлённая) утилита выводит своё меню уже при старте Фара.

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

Re: GetMacroCopy

Post by John Doe » Mon 06 May, 2013 15:17

Последнюю строку в файле удалите.
Я сразу исправил, но вы скачали быстрее )

Denis
Posts: 1421
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 8 times
Been thanked: 2 times

Re: GetMacroCopy

Post by Denis » Mon 06 May, 2013 15:28

Спасибо.

А может такие вещи уже стоит выкладывать на plugring?

Smitis
Posts: 1596
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 18 times
Been thanked: 38 times

Re: GetMacroCopy

Post by Smitis » Mon 06 May, 2013 17:25

Может сделать MacroBrowserLite модулем? А то неудобно каждый раз макросы исправлять.
Разум когда-нибудь победит.

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

Re: GetMacroCopy

Post by Shmuel » Mon 06 May, 2013 17:45

Есть ещё одна незаявленная бесполезная функция:
Макросы добавленные через far.AddMacro можно удалить по Del
После удаления макрос не удаляется из меню.

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

Re: GetMacroCopy

Post by John Doe » Mon 06 May, 2013 17:51

Smitis wrote:Может сделать MacroBrowserLite модулем? А то неудобно каждый раз макросы исправлять.
А кто не даёт? Надо лишь положить файл в modules. Обратите внимание на строку

Code: Select all

--if using as module
if not Macro then return Show end
Соответственно подключать как local Show = require"MacroBrowserLite",
или даже так: action=require"MacroBrowserLite"

Но!
Не рекомендую.
Во-первых с каждой версией интерфейс меняется.
Во-вторых, планирую сделать сохранение пользовательских клавиш в базу.
Или зачем вам модуль?
Shmuel wrote:
Есть ещё одна незаявленная бесполезная функция:
Макросы добавленные через far.AddMacro можно удалить по Del
После удаления макрос не удаляется из меню.
Эту функцию добавил в процессе разбора работы MacroAdd.
Поскольку практической ценности она не не имеет, то совершенствовать бессмысленно.

Когда будет доступ к реальным макросам, а не их копиям, то можно будет доделать за компанию.

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

Re: GetMacroCopy

Post by Shmuel » Mon 06 May, 2013 17:57

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

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

Re: GetMacroCopy

Post by John Doe » Mon 06 May, 2013 18:01

Фича не заявлена, считайте что её нет. В следующий раз удалю, или закомментирую.
Smitis wrote:А то неудобно каждый раз макросы исправлять.
А какие комбинации предпочитаете?

tstr
Posts: 533
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 9 times
Been thanked: 8 times

Re: GetMacroCopy

Post by tstr » Mon 06 May, 2013 18:09

может быть уже пора сделать подобающее описание и опубликовать в "Macros & Scripts | Полезные макросы и скрипты" ?

Smitis
Posts: 1596
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 18 times
Been thanked: 38 times

Re: GetMacroCopy

Post by Smitis » Mon 06 May, 2013 19:18

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

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

Re: GetMacroCopy

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

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
Без этого при удалении курсор скачет в начало списка.

Post Reply

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