GetMacroCopy

Здесь обсуждается всё, что касается макросов.
Shmuel
Posts: 5600
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 186 times

GetMacroCopy

Post by Shmuel » Sat 06 Apr, 2013 11:27

gotar
Пока нет времени ответить вам по пунктам.
В своё время начал писать утилиту для работы с макросами, пока она может только показать загруженные макросы и события. Утилита на самой начальной стадии.

Max Rusov
Posts: 3631
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 10 times

Re: Организация Макросов

Post by Max Rusov » Sat 06 Apr, 2013 13:44

Хотелось бы, чтобы было как в MacroLib:



С переходом на описание макроса по F4.

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

Re: Организация Макросов

Post by John Doe » Sat 06 Apr, 2013 14:02

MaxRusov
Имея mf.GetMacroCopy вы легко можете это сделать.
Путь к файлу находится в поле FileName.
Позиция начала определения макроса не хранится, но можно найти по имени.

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

Re: Организация Макросов

Post by Shmuel » Sat 06 Apr, 2013 14:12

Прошу иметь в виду, что mf.GetMacroCopy не случайно недокументирована. Это экспериментальная функция, у неё может ещё измениться и название, и сигнатура, и т.п.

gotar
Posts: 307
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 8 times

Re: Организация Макросов

Post by gotar » Sat 06 Apr, 2013 17:00

Мне кажется GetMacroCopy очень полезной функцией. Может у Вас в загашнике есть функции доступа к элементам массива LoadedMacros. На первый взгляд, если динамически изменять action или key ничего плохого не произойдет. Изменение в будущем имен или типов параметров экспериментальных функций меня не пугает.

IgorZ
Posts: 566
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 9 times
Been thanked: 31 times

Re: GetMacroCopy

Post by IgorZ » Mon 08 Apr, 2013 04:40

Shmuel wrote:gotar
Пока нет времени ответить вам по пунктам.
В своё время начал писать утилиту для работы с макросами, пока она может только показать загруженные макросы и события. Утилита на самой начальной стадии.
Даже на такой стадии уже полезна. Одно замечание. Прекрасно понимаю, что всего лишь черновик, но фиксированная ширина столбцов и заголовки без содержания - зло. Чтобы не ограничиваться критикой, предлагаю такую правку (изменения помечены комментами):

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

Re: GetMacroCopy

Post by John Doe » Mon 08 Apr, 2013 10:17

Имхо любая критика выложенного наброска тут бессмысленна, т.к. финальная утилита вряд ли будет иметь много с ним общего.
И мне кажется автор даёт нам понять, что свободного времени у него нету, и пишите утилиту сами (вполне справедливо)

Update
Менеджер Lua-скриптов для Fara
Macro Browser alt. — обозреватель макросов
MacroLib — Far Macro Library (умеет работать не только с fml)

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

Post by John Doe » Sun 12 May, 2013 21:14

А тем временем в составе LuaMacro появилась утилита mbrowser.lua

gotar
Posts: 307
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 8 times

GetMacroCopy

Post by gotar » Sun 28 Aug, 2016 16:32

http://forum.farmanager.com/viewtopic.p ... 58#p140358 Что правда, ни Area, ни filemask не используются для построения списка макросов в которых надо искать искать клавишу?

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

GetMacroCopy

Post by John Doe » Sun 28 Aug, 2016 16:37

gotar wrote: в которых надо искать искать клавишу
Зависит от того кому надо, и для чего.
LuaMacro при запуске разумеется использует и эти поля, и прочие условия. Подробности в исходниках.

gotar
Posts: 307
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 8 times

GetMacroCopy

Post by gotar » Sun 28 Aug, 2016 17:16

при нажатии каждой клавиши каждый раз заново проверяются эти поля?
Last edited by gotar on Sun 28 Aug, 2016 17:17, edited 1 time in total.

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

GetMacroCopy

Post by John Doe » Sun 28 Aug, 2016 17:26

Это детали реализации, в данном случае несущественные.
Если у вас есть конкретная задача, то сформулируйте её наконец.

А если просто любопытно устройство luamacro, то изучайте первоисточник.

gotar
Posts: 307
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 8 times

GetMacroCopy

Post by gotar » Sun 28 Aug, 2016 21:34

К сожалению, о том как происходит взаимодействие Lua и Far я нашел единственный пост http://forum.farmanager.com/viewtopic.p ... 080#p95080. Но там нет ссылок на исходники.

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

GetMacroCopy

Post by John Doe » Sun 28 Aug, 2016 21:39


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

GetMacroCopy

Post by John Doe » Sat 01 Dec, 2018 13:20

Имея через mf.GetMacroCopy доступ ко всем загруженным макросам можно сделать очень многое.
Однако неоднократно сталкивался с тем, что при работе с этими "сырыми" макросам в разных местах приходится повторно реализовывать логику, уже существующую в LuaMacro.

Приводя к некоему общему знаменателю те потребности, что уже не раз возникали, хотелось бы иметь штатную функцию, по заданной клавише отбирающую подходящие макросы, наподобие mf.eval(...,2), но с расширенными возможностями.
Что конкретно требуется:
- искать макрос, не запуская.
- опционально, возвращать все подходящие макросы, минуя меню конфликта
- опционально, при подборе включать в список макросы и с низким приоритетом (отдельно: те, условия/флаги которых не сработали)
(последнее связано с https://bugs.farmanager.com/view.php?id=3684, но не только)

Назовём её, например, mf.MatchMacro.

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

GetMacroCopy

Post by John Doe » Sat 01 Dec, 2018 13:26

Отдельное пожелание: функция (скажем, ChooseMacro), формирующая меню макросов, аналогичное меню конфликта макросов.
Аргументом этой функции может служить список макросов, полученный mf.MatchMacro.
Это может быть не самостоятельная функция, а метод объекта.

Это вариант решения https://bugs.farmanager.com/view.php?id=3684, и потенциально других подобных задач.
Например, таким образом было бы делом простого макроса запросить у пользователя клавишу, и вывести на экран список подходящих макросов, для изучения/редактирования/запуска.

Post Reply

Return to “Обсуждение макросов”