mf.EnumScripts (предложения по api)

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

LuaMacro — Lua как язык макросов

Post by John Doe »

Latest post of the previous page:

Поделитесь в каких случаях было бы удобно вперемешку.
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

LuaMacro — Lua как язык макросов

Post by buniak_a_h »

Поиск всех типов макросов, определённых в одном файле (в том же, в котором определён макрос типа Macro) или в файлах из одного каталога с неким макросом. Т.е. составляется список скриптов всех типов, а уж потом он анализируется на предмет имени файла, префикса, хоткея и т.п.
Такое у меня было. Естественно, задача решается несколькими вызовами редактора. Но если есть возможность получить ВСЕ макросы, а потом по списку поискать, что надо, эта задача решалась бы легче.
Другая (но похожая) история: некая функция вызывается как из макроса (хоткей помню), так и из комстроки. А вот префикс запамятовал; знаю, что CommandLine определена в том же макрофайле, что и Macro, но в каком - тоже забыл.
Я понимаю, с такими задачами есть простой совет: если склероз, то пора завязывать. Но ведь иногда и на благодарности нарываюсь. Значит, кому-то польза.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

LuaMacro — Lua как язык макросов

Post by John Doe »

buniak_a_h wrote: Sun 20 Jun, 2021 20:57 Но если есть возможность получить ВСЕ макросы, а потом по списку поискать, что надо, эта задача решалась бы легче.
Макробраузер в любом случае будет показывать всё в одном списке, поэтому не уверен что понимаю вашу проблему.

Сам же макробраузер для каждого типа скриптов применяет разные функции форматирования, поэтому и для него разница не велика - разом получать или по типам.
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

LuaMacro — Lua как язык макросов

Post by buniak_a_h »

John Doe, я, наверно, не в теме. Что такое макробраузер? Я знаю скрипты Macro Browser и Macro Browser alt. Но задача именно в том, чтобы получить таблицу (молча, без эха на экране). К тому же Macro Browser alt показывает только макросы и ивенты. Ни MenuItem, ни CommandLine, ни панельные модули не показывает (ну, или я не нашёл).
Форматирование меня не интересует; мне надо получить таблицу-аргумент и имя файла, в котором макрос описан. Причём, иметь таблицу, по которой можно искать, фильтровать и т.п. . Я не знаю, как при помощи имеющегося инструментария решить описанную задачу.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

LuaMacro — Lua как язык макросов

Post by John Doe »

buniak_a_h wrote: Mon 21 Jun, 2021 06:47 Но задача именно в том, чтобы получить таблицу (молча, без эха на экране)
Расскажите что именно с таблицей потом будете делать.
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

LuaMacro — Lua как язык макросов

Post by buniak_a_h »

John Doe wrote: Mon 21 Jun, 2021 07:06 Расскажите что именно с таблицей потом будете делать.
Да я, вроде, рассказал. Две задачи, которые мне пришлось решать в ручном режиме, было бы замакросить легко. Если б был такой сервис.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

LuaMacro — Lua как язык макросов

Post by John Doe »

Интересуют подробности, которых вы не рассказали.

Дело в том что сделать перебор всех типов скриптов очень просто, вопрос лишь в том, действительно ли надо ли чтобы это было в апи, или же вы (одной строкой?) добавите поверх.
https://t.me/FarManager — Telegram чат
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

LuaMacro — Lua как язык макросов

Post by IgorZ »

John Doe wrote: Wed 16 Jun, 2021 15:18
О, пока я нашёл время поразбираться со старым вариантом, тут уже новый. Красиво получилось. Вопрос такой: а почему data передаётся без копирования в новую таблицу? В каких случаях её изменение может быть нужно?
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

LuaMacro — Lua как язык макросов

Post by IgorZ »

buniak_a_h wrote: Mon 21 Jun, 2021 06:47 К тому же Macro Browser alt показывает только макросы и ивенты. Ни MenuItem, ни CommandLine, ни панельные модули не показывает (ну, или я не нашёл).
LuaManager показывает всё это и ещё модули вдобавок.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

LuaMacro — Lua как язык макросов

Post by John Doe »

IgorZ wrote: Mon 21 Jun, 2021 11:56 а почему data передаётся без копирования в новую таблицу? В каких случаях её изменение может быть нужно?
Всё прочее - внутренние структуры, а data это пользовательские данные, просто не вижу причин ограничивать доступ к ним.
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

LuaMacro — Lua как язык макросов

Post by buniak_a_h »

John Doe wrote: Mon 21 Jun, 2021 12:03 В каких случаях её изменение может быть нужно?
Я часто через data передаю данные из condition в action. Просто при проверке условия часто вычисляется нечто, которое потом используется в action
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

LuaMacro — Lua как язык макросов

Post by John Doe »

@buniak_a_h, это не отвечает на вопрос зачем вам менять дата через GetMacroCopy
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

LuaMacro — Lua как язык макросов

Post by buniak_a_h »

John Doe, не-не, я меняю не через GetMacroCopy. data же передаётся в параметре и в condition, и в action. Там и меняю.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

LuaMacro — Lua как язык макросов

Post by John Doe »

buniak_a_h wrote: Sun 20 Jun, 2021 15:48 а что, несколько ScriptType-ов указать нельзя? Или совсем опустить (что означает "все типы")?
Вот так:

Code: Select all

local all = {"CustomSortModes", "Event", "Macro", "MenuItem", "CommandLine", "PanelModule", "ContentColumns",}
for _,v in ipairs(all) do
  for m, idx in mf.EnumScripts(v) do
    print(idx, dump(m))
  end
end
Итератором сложнее:
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

mf.EnumScripts (предложения по api)

Post by John Doe »

Доделал листинг MenuItems для штатного макробраузера.
Если кто не дружен с гитхабом но хочет посмотреть - изменённые файлы прилагаю.

<edit> см обновление ниже
Last edited by John Doe on Sat 04 Dec, 2021 17:45, edited 2 times in total.
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

mf.EnumScripts (предложения по api)

Post by buniak_a_h »

Распаковал в …\Plugins\LuaMacro, перезапустил FAR. При вызове F11 -> MacroBrowser получаю

Code: Select all

╔════════════════════════════════════════════════════════════ Error ═════════════════════════════════════════════════════════════╗
║ C:\Program Files\Far Manager\Plugins\LuaMacro\LuaMacro.dll:                                                                    ║
║ C:\Program Files\Far Manager\Plugins\LuaMacro\utils.lua:1224: attempt to call field 'GetCustomSortModes' (a nil value)         ║
║ stack traceback:                                                                                                               ║
║    C:\Program Files\Far Manager\Plugins\LuaMacro\utils.lua:1224: in function 'EnumScripts'                                     ║
║    C:\Program Files\Far Manager\Plugins\LuaMacro\mbrowser.lua:71: in function 'GetItems'                                       ║
║    C:\Program Files\Far Manager\Plugins\LuaMacro\mbrowser.lua:296: in function 'macrobrowser'                                  ║
║    C:\Program Files\Far Manager\Plugins\LuaMacro\LuaMacro.lua:485: in function <C:\Program Files\Far Manager\Plugins\LuaMacro\ ║
║ LuaMacro.lua:429>                                                                                                              ║
╟────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢
║                                                             { OK }                                                             ║
╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
Я чего-то не доделал?
Post Reply

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