Как инспектировать гуиды макросов на неповторяемость?

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Prutkov
Posts: 44
Joined: Sat 08 Apr, 2023 04:58
Has thanked: 33 times
Been thanked: 2 times

Как инспектировать гуиды макросов на неповторяемость?

Post by Prutkov »

Нередко удобно пользоваться копи-пастой для переноса фрагментов одного макроса в другой. При этом иногда по забывчивости или из-за недостаточной дотошности может скопироваться гуид, да так и остаться неизменным. И, таким образом, в разных макросах может оказаться один и тот же гуид.

Подскажите, пожалуйста, способ: как в массе макросов выявить идентичные гуиды?
Yegor
Posts: 1328
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Как инспектировать гуиды макросов на неповторяемость?

Post by Yegor »

  1. Открыть папку Far\Plugins\LuaMacro
  2. Сделать копию файла mbrowser.lua
  3. Заменить вот этим
    mbrowser.lua
    (19.81 KiB) Downloaded 35 times
  4. Перезапустить Far
  5. F11 - > Macro Browser. У вас должна появиться новая колонка Id
  6. CtrlF4 (сортировка по Id)
Дальше глазами :)

EDIT: Или скопировать в редактор и использовать плагины для поиска
Last edited by Yegor on Fri 02 Jun, 2023 19:28, edited 2 times in total.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
Yegor
Posts: 1328
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Как инспектировать гуиды макросов на неповторяемость?

Post by Yegor »

Заметил что сортировка для Id работает как-то странно (сортирует криво), зависит от System Settings -> Sorting collation
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Как инспектировать гуиды макросов на неповторяемость?

Post by Smitis »

Prutkov wrote: Fri 02 Jun, 2023 18:48 Подскажите, пожалуйста, способ: как в массе макросов выявить идентичные гуиды?
Есть глобальное решение - не использовать гуиды в макросах. :)
Разум когда-нибудь победит.
Prutkov
Posts: 44
Joined: Sat 08 Apr, 2023 04:58
Has thanked: 33 times
Been thanked: 2 times

Как инспектировать гуиды макросов на неповторяемость?

Post by Prutkov »

Yegor wrote: Fri 02 Jun, 2023 19:24 F11 - > Macro Browser. У вас должна появиться новая колонка Id
В Фаре под ConEmu колонка .

А в голом Фаре колонка появляется, но из-за хаотичной последовательность расположения гуидов найти двойников весьма затруднительно. Но от самого наличия колонки есть однозначная польза — в ней обозначены макросы, в которых гудов нет: <no id>.
Prutkov
Posts: 44
Joined: Sat 08 Apr, 2023 04:58
Has thanked: 33 times
Been thanked: 2 times

Как инспектировать гуиды макросов на неповторяемость?

Post by Prutkov »

Smitis wrote: Fri 02 Jun, 2023 20:39
Prutkov wrote: Fri 02 Jun, 2023 18:48 Подскажите, пожалуйста, способ: как в массе макросов выявить идентичные гуиды?
Есть глобальное решение - не использовать гуиды в макросах. :)
Это шутка такая или действительно есть тому обоснование?
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Как инспектировать гуиды макросов на неповторяемость?

Post by Shmuel »

Prutkov wrote: Fri 02 Jun, 2023 21:02 Это шутка такая или действительно есть тому обоснование?
Гуид в макросе - опциональное поле, на работоспособность макроса никак не влмяет.
Гуиды эти были введены для удобства некоторых утилит, манипулирующих с макросами.
Yegor
Posts: 1328
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Как инспектировать гуиды макросов на неповторяемость?

Post by Yegor »

Prutkov wrote: Fri 02 Jun, 2023 20:55 bad argument #4 to 'format' (string expected, got nil)
попробуйте вот эту версию
mbrowser.lua
(19.85 KiB) Downloaded 36 times
Prutkov wrote: Fri 02 Jun, 2023 20:55 А в голом Фаре колонка появляется, но из-за хаотичной последовательность расположения гуидов найти двойников весьма затруднительно
Options -> System settings:
Sorting collation: ordinal
[ ] Treat digits as numbers
[ ] Case sensitive
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Как инспектировать гуиды макросов на неповторяемость?

Post by buniak_a_h »

Shmuel wrote: Fri 02 Jun, 2023 21:11 Гуиды эти были введены для удобства некоторых утилит, манипулирующих с макросами
А я использую гуиды для связывания разных макросов. Пример - просмотр таблиц (table, far, panel и т.п.) и вызов справки по функциям.
Last edited by buniak_a_h on Fri 02 Jun, 2023 21:36, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Как инспектировать гуиды макросов на неповторяемость?

Post by John Doe »

Prutkov wrote: Fri 02 Jun, 2023 18:48 Подскажите, пожалуйста, способ: как в массе макросов выявить идентичные гуиды?
Главный вопрос: для чего.
Впервые они были использованы в rebind. И там для выявления дублей ничего делать не надо, потому что это делается автоматически.
Yegor wrote: Fri 02 Jun, 2023 19:59 Заметил что сортировка для Id работает как-то странно
С сортировкой ещё один нюанс есть: возможны дубли отличающиеся регистром.
https://t.me/FarManager — Telegram чат
Yegor
Posts: 1328
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Как инспектировать гуиды макросов на неповторяемость?

Post by Yegor »

John Doe wrote: Fri 02 Jun, 2023 21:45 С сортировкой ещё один нюанс есть: возможны дубли отличающиеся регистром.
Про сортировку написал выше, там можно выбрать и регистр ([ ] Case sensitive)
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
Prutkov
Posts: 44
Joined: Sat 08 Apr, 2023 04:58
Has thanked: 33 times
Been thanked: 2 times

Как инспектировать гуиды макросов на неповторяемость?

Post by Prutkov »

John Doe wrote: Fri 02 Jun, 2023 21:45
Prutkov wrote: Fri 02 Jun, 2023 18:48 Подскажите, пожалуйста, способ: как в массе макросов выявить идентичные гуиды?
в rebind ... это делается автоматически
Да, rebind вполне решает задачу выявления неуникальных гуидов.
Благодарю Вас.
Prutkov
Posts: 44
Joined: Sat 08 Apr, 2023 04:58
Has thanked: 33 times
Been thanked: 2 times

Как инспектировать гуиды макросов на неповторяемость?

Post by Prutkov »

Yegor wrote: Fri 02 Jun, 2023 21:28 попробуйте вот эту версию
mbrowser.lua
Да, теперь скрипт работает и в Фаре под ConEmu. При этом, при наличии большого количества макросов определить повторяющиеся гуиды "на глаз" при любом из вариантов сортировки строк меню макробраузера едва ли вообще реально. И выше постом уже отмечено, что эту задачу решает rebind, причём — автоматически.

И, вместе с тем, скрипт mbrowser.lua является хорошей альтернативой для практической сверки результатов.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Как инспектировать гуиды макросов на неповторяемость?

Post by buniak_a_h »

Prutkov wrote: Sat 03 Jun, 2023 08:05 при наличии большого количества макросов определить повторяющиеся гуиды "на глаз" при любом из вариантов сортировки строк меню макробраузера едва ли вообще реально
Предлагаю следующий скрипт на LUA. Скрипт не оформлен как макрос, вызывается из командной строки либо из пользовательского МЕНЮ (пункт МЕНЮ представлен в архиве для примера). Кроме скрипта в архив входят три моих модуля и модуль lua explorer (le.lua).
отработки скрипт выводит список всех скриптов (макросов, ивентов и т.п.) с заданным ГУИДом. Уникальные ГУИДы в списке указаны серым (LIF_GRAYED); по клавише Ctrl+H можно выключить/включить показ скриптов с уникальными ГУИДами. По F3 показываются подробности скрипта (те, что выдаёт far.EnumScripts); для показа используется скрипт le.lua. По Alt+F4 файл со скриптом открывается в редакторе. Занесение в историю блокируется (мне так удобнее было); позиционирование на макросе не реализовано.
В скрипте обнаружена ошибка. После строки v=…DM_LISTGETITEM… надо дописать ; v.Index = i Исправленное тут
Last edited by buniak_a_h on Tue 06 Jun, 2023 07:02, edited 3 times in total.
Prutkov
Posts: 44
Joined: Sat 08 Apr, 2023 04:58
Has thanked: 33 times
Been thanked: 2 times

Как инспектировать гуиды макросов на неповторяемость?

Post by Prutkov »

buniak_a_h,
Во-первых, спасибо за понимание важности задачи и за намерение сделать скрипт, который автоматически находил бы не уникальные (повторяющиеся) гуиды.
скпирт вызывается из командной строки либо из пользовательского МЕНЮ
И то, и другое работает. Указанные клавиши (Ctrl+H, F3 и Alt+F4) тоже исправно работают.
позиционирование на макросе не реализовано
Поскольку по Alt+F4 макрос открывается в редакторе, то, при необходимости, оттуда несложно выйти и на местонахождения макроса.

Вот только в открывающемся списке макросы с неуникальными гуидами пока что не показаны или не выделены.

И ещё одна шероховатость — после каждой перезагрузки макросов всплывает список, генерируемый скриптом, в том числи и при реальном отсутствии макросов с повторяющимися гуидами.
Post Reply

Return to “Нужна помощь”