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

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

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

Post by sToLp » Mon 23 May, 2016 23:07

Нередко навешиваю макросы, распространяемые на все области — 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: 5166
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Tue 24 May, 2016 07:15

Можно оставить 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: 11143
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 73 times

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

Post by John Doe » Tue 24 May, 2016 07:59

Shmuel wrote: Если в макрофайле много таких макросов
Или то же переменной.

User avatar
sToLp
Posts: 713
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

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

Post by sToLp » Tue 24 May, 2016 14:29

Shmuel
John Doe

Спасибо! Ваши советы гораздо удобнее решают задачу, чем тот вариант, который предполагался мною.
При этом если после добавления указанного condition в меню "Исполнить макрос" случайно нажать заданный шорткат, то вылезает

Shmuel
Posts: 5166
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Tue 24 May, 2016 14:41

sToLp
Сейчас специально скачал календарь, там на 553 строке нет никакого Menu.

User avatar
sToLp
Posts: 713
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

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

Post by sToLp » Tue 24 May, 2016 14:45

Shmuel
Строка 553:
condition=function() return not (Area.Menu and Menu.Id=="165AA6E3-C89B-4F82-A0C5-C309243FD21B") end;

Shmuel
Posts: 5166
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Tue 24 May, 2016 14:50

sToLp
У вас не последняя версия календаря. А автор календаря пусть желательно не "затеняет" глобальные переменные своими локальными.

User avatar
sToLp
Posts: 713
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

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

Post by sToLp » Tue 24 May, 2016 15:07

Shmuel wrote: У вас не последняя версия календаря.
И действительно, скачал последнюю версию dimfish_Calendar, добавил кондишен и ошибка исчезла. Спасибо!

Shmuel
Posts: 5166
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Tue 24 May, 2016 15:16

sToLp wrote: скачал последнюю версию dimfish_Calendar, добавил кондишен и ошибка исчезла
Ошибка не должна была исчезнуть. Ошибка присутствует и в текущей версии календаря, это строчка 74: local Menu = far.Menu.
Чтобы не ждать милостей от природы автора календаря, замените Menu.Id на _G.Menu.Id.

User avatar
sToLp
Posts: 713
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

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

Post by sToLp » Tue 24 May, 2016 15:26

Shmuel
Shmuel wrote: Ошибка не должна была исчезнуть.
Тем не менее исчезла, уж поверьте на слово. Новая версия существенно переработана. Кондишен теперь не в 553, а в 313 строке.
Shmuel wrote: замените Menu.Id на _G.Menu.Id
Сделаю. Спасибо!

Shmuel
Posts: 5166
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Tue 24 May, 2016 15:33

sToLp wrote: уж поверьте на слово
Уж позвольте не поверить. 74-я строка на месте в прежнем виде.

User avatar
sToLp
Posts: 713
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

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

Post by sToLp » Tue 24 May, 2016 15:36

Shmuel wrote: Уж позвольте не поверить.
Честное слово! Могу прислать файлы.
В старой версии макроса поменял Menu.Id на _G.Menu.Id и ошибка там тоже исчезла.

Shmuel
Posts: 5166
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Tue 24 May, 2016 15:40

sToLp wrote: Честное слово!
Анекдот. В одной национальной советской школе, ученик отвечает учителю, что 2*2=5. Учитель спрашивает: чем можешь доказать? Ответ: мамой клянусь.

User avatar
sToLp
Posts: 713
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

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

Post by sToLp » Tue 24 May, 2016 15:51

Shmuel
Да не виноват я, что она исчезла. Вы мне сами подсказали как с нею справиться. И исчезла ошибка до того как я поменял Menu.Id на _G.Menu.Id. Я перепроверял переходя на старую версию и возвращаясь. В старой версии без смены Menu.Id на _G.Menu.Id ошибка повторялась, а в новой её уже не было изначально. Хотите верьте, а хотите проверьте.
Attachments
probe.7z
(8.85 KiB) Downloaded 20 times

User avatar
HaRT
Moderator
Posts: 8049
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

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

Post by HaRT » Tue 24 May, 2016 16:02

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

User avatar
sToLp
Posts: 713
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

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

Post by sToLp » Tue 24 May, 2016 17:09

Shmuel
Макрос dimfish_Calendar в очередной раз обновился и это помогло найти причину "таинственного" исчезновения ошибки. Всё таки это я виноват в её исчезновении. Мне извиняться. Извините, пожалуйста, за путаницу. Дело в том, что думая, что я обновляюсь на новую версию, на самом деле ошибочно "обновился" на одну из старых, в которой ещё не было local Menu = far.Menu. Поэтому ошибка и не возникала.

А в самой новой версии ошибка вновь возникает, пока не поменяю в кондишен Menu.Id на _G.Menu.Id. Но до автора макроса его нечаянная оплошность уже доведена, и, полагаю, что скоро всё устаканится.

Post Reply

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