О желательности сокращённого перечисления областей

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

О желательности сокращённого перечисления областей

Post by sToLp »

Нередко навешиваю макросы, распространяемые на все области — Common, на одинаковые шорткаты. Но в этом случае вызов макросов в области Menu зацикливается на меню "Исполнить макрос". И из-за этого приходится делать длинное перечисление областей с исключением области Menu: area = "Other Shell Viewer Editor Dialog Search Disks MainMenu Help Info QView Tree FindFolder UserMenu ShellAutoCompletion DialogAutoCompletion";.

Поэтому вопрос следующий: нельзя ли сделать возможность укороченной записи что-то типа такой: area = "Common –Menu"; заодно она была бы и более читабельной — не надо проверять все ли области перечислены.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

О желательности сокращённого перечисления областей

Post by Shmuel »

Можно оставить area="Common", но добавить функцию condition, например, для исключения всех меню:
condition=function() return not Area.Menu end;
или для исключения только меню "Исполнить макрос":
condition=function() return not (Area.Menu and Menu.Id=="165AA6E3-C89B-4F82-A0C5-C309243FD21B") end;
Если в макрофайле много таких макросов, можно эту функцию вынести наверх и дать ей имя, а в макросах просто указывать
condition=<имя>;
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

О желательности сокращённого перечисления областей

Post by John Doe »

Shmuel wrote: Если в макрофайле много таких макросов
Или то же переменной.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

О желательности сокращённого перечисления областей

Post by sToLp »

Shmuel
John Doe

Спасибо! Ваши советы гораздо удобнее решают задачу, чем тот вариант, который предполагался мною.
При этом если после добавления указанного condition в меню "Исполнить макрос" случайно нажать заданный шорткат, то вылезает
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

О желательности сокращённого перечисления областей

Post by Shmuel »

sToLp
Сейчас специально скачал календарь, там на 553 строке нет никакого Menu.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

О желательности сокращённого перечисления областей

Post by sToLp »

Shmuel
Строка 553:
condition=function() return not (Area.Menu and Menu.Id=="165AA6E3-C89B-4F82-A0C5-C309243FD21B") end;
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

О желательности сокращённого перечисления областей

Post by Shmuel »

sToLp
У вас не последняя версия календаря. А автор календаря пусть желательно не "затеняет" глобальные переменные своими локальными.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

О желательности сокращённого перечисления областей

Post by sToLp »

Shmuel wrote: У вас не последняя версия календаря.
И действительно, скачал последнюю версию dimfish_Calendar, добавил кондишен и ошибка исчезла. Спасибо!
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

О желательности сокращённого перечисления областей

Post by Shmuel »

sToLp wrote: скачал последнюю версию dimfish_Calendar, добавил кондишен и ошибка исчезла
Ошибка не должна была исчезнуть. Ошибка присутствует и в текущей версии календаря, это строчка 74: local Menu = far.Menu.
Чтобы не ждать милостей от природы автора календаря, замените Menu.Id на _G.Menu.Id.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

О желательности сокращённого перечисления областей

Post by sToLp »

Shmuel
Shmuel wrote: Ошибка не должна была исчезнуть.
Тем не менее исчезла, уж поверьте на слово. Новая версия существенно переработана. Кондишен теперь не в 553, а в 313 строке.
Shmuel wrote: замените Menu.Id на _G.Menu.Id
Сделаю. Спасибо!
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

О желательности сокращённого перечисления областей

Post by Shmuel »

sToLp wrote: уж поверьте на слово
Уж позвольте не поверить. 74-я строка на месте в прежнем виде.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

О желательности сокращённого перечисления областей

Post by sToLp »

Shmuel wrote: Уж позвольте не поверить.
Честное слово! Могу прислать файлы.
В старой версии макроса поменял Menu.Id на _G.Menu.Id и ошибка там тоже исчезла.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

О желательности сокращённого перечисления областей

Post by Shmuel »

sToLp wrote: Честное слово!
Анекдот. В одной национальной советской школе, ученик отвечает учителю, что 2*2=5. Учитель спрашивает: чем можешь доказать? Ответ: мамой клянусь.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

О желательности сокращённого перечисления областей

Post by sToLp »

Shmuel
Да не виноват я, что она исчезла. Вы мне сами подсказали как с нею справиться. И исчезла ошибка до того как я поменял Menu.Id на _G.Menu.Id. Я перепроверял переходя на старую версию и возвращаясь. В старой версии без смены Menu.Id на _G.Menu.Id ошибка повторялась, а в новой её уже не было изначально. Хотите верьте, а хотите проверьте.
Attachments
probe.7z
(8.85 KiB) Downloaded 55 times
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

О желательности сокращённого перечисления областей

Post by HaRT »

Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

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