Поведение, когда нужно сделать выбор из нескольких макросов

Здесь обсуждается всё, что касается макросов.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Поведение, когда нужно сделать выбор из нескольких макро

Post by Smitis »

Latest post of the previous page:

Странно, если делать по отдельности key="AltA AltB AltC", то для вариант с RAlt получается не нужен. Если делать через регулярное выражение key="/R?Alt(Shift)?[A-Z]/", то приходится добавлять "R?"
Разум когда-нибудь победит.
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Поведение, когда нужно сделать выбор из нескольких макро

Post by Shmuel »

Smitis wrote:Странно, если делать по отдельности key="AltA AltB AltC", то для вариант с RAlt получается не нужен. Если делать через регулярное выражение key="/R?Alt(Shift)?[A-Z]/", то приходится добавлять "R?"
Это не странно, это так сделано. Для отдельных ключей и для их списков сохранено поведение, когда "Alt" фактически означает "Alt RAlt" и т.п. Для регекспов такое сделать затруднительно, да и на мой взгляд - нежелательно.
Нынешнее поведение позволяет указать любой из вариантов:
1. левый Alt: /Alt/
2. правый Alt: RAlt или /RAlt/
3. любой из них: Alt или /R?Alt/
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Поведение, когда нужно сделать выбор из нескольких макро

Post by Smitis »

Shmuel wrote:Это не странно, это так сделано. Для отдельных ключей и для их списков сохранено поведение, когда "Alt" фактически означает "Alt RAlt" и т.п. Для регекспов такое сделать затруднительно, да и на мой взгляд - нежелательно.
Нынешнее поведение позволяет указать любой из вариантов:
1. левый Alt: /Alt/
2. правый Alt: RAlt или /RAlt/
3. любой из них: Alt или /R?Alt/
Но такое несоответстие поведения регулярных выражений обычным клавишам создаёт путаницу.
Например, если я вешаю на, скажем AltA, один макрос, а затем, с большим приоритетом, второй, то макрос вызовется при любом Alt, хоть левом, хоть правом. Но если первый макрос был /R?AltA/, то второй должен быть key="AltA RAltA".
Вот в моём случае, например, регулярное выражение для заглушек приводит к сокращению записи в одном месте, но увеличению в других.
Разум когда-нибудь победит.
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Поведение, когда нужно сделать выбор из нескольких макро

Post by Shmuel »

Smitis wrote:Но такое несоответстие поведения регулярных выражений обычным клавишам создаёт путаницу.
Например, если я вешаю на, скажем AltA, один макрос, а затем, с большим приоритетом, второй, то макрос вызовется при любом Alt, хоть левом, хоть правом. Но если первый макрос был /R?AltA/, то второй должен быть key="AltA RAltA".
Вот в моём случае, например, регулярное выражение для заглушек приводит к сокращению записи в одном месте, но увеличению в других.
При нажатии RAltA отдаётся предпочтение /R?AltA/ (точное совпадение) по отношению к AltA (неточное совпадение). То-есть до сравнения приоритетов дело не доходит. Возможно, алгоритм стоит подкорректировать, но на данный момент необходимость обозначить key="AltA RAltA" (и только в случаях, подобных вашему) не видится таким уж серьёзным препятствием.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Поведение, когда нужно сделать выбор из нескольких макро

Post by Smitis »

Понял. Правится не будет. Значит, единственным макросом заглушкой обойтись просто так не удаётся. Увы, возвращаюсь к множественному заданию заглушек "AltA AltB AltC ..."
Разум когда-нибудь победит.
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Поведение, когда нужно сделать выбор из нескольких макро

Post by Shmuel »

Smitis wrote:Понял. Правится не будет. Значит, единственным макросом заглушкой обойтись просто так не удаётся. Увы, возвращаюсь к множественному заданию заглушек "AltA AltB AltC ..."
Насчёт "правиться не будет" никто не говорил. Если будет предложен алгоритм, который удобнее или логичнее существующего, можно будет и поправить.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Поведение, когда нужно сделать выбор из нескольких макро

Post by John Doe »

Что решили насчёт объединения priority и condition?
Имхо это разные вещи, и использоваться могут одновременно.
Причём результат зависит даже от того, в каком порядке они будут проверяться.
Сейчас priority проверяется раньше condition. Не факт, что это оптимально.
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Поведение, когда нужно сделать выбор из нескольких макро

Post by Shmuel »

John Doe wrote:Что решили насчёт объединения priority и condition?
Имхо это разные вещи, и использоваться могут одновременно.
Причём результат зависит даже от того, в каком порядке они будут проверяться.
Сейчас priority проверяется раньше condition. Не факт, что это оптимально.
Объединения не будет, для этого и советовался в форуме.
А priority НЕ проверяется раньше condition, насколько мне известно.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Поведение, когда нужно сделать выбор из нескольких макро

Post by John Doe »

Да, поторопился я, был не прав.

А какой сейчас рекомендуется способ для временного отключения макроса?
Закомментировать блок это логично, но всегда удобно.

Остаётся только "испортить" имя клавиатурной комбинации
Может лучше зарезервировать для этого приоритет 0?
(А встроенные действия фара в этом случае можно принять за 1)
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Поведение, когда нужно сделать выбор из нескольких макро

Post by Shmuel »

John Doe wrote:А какой сейчас рекомендуется способ для временного отключения макроса?
[......]
Может лучше зарезервировать для этого приоритет 0?
(А встроенные действия фара в этом случае можно принять за 1)
Это тоже неудобно, так как придётся добавлять поле priority в макросы, где такого поля не было.
Предлагаю добавить функцию-заглушку NoMacro, то-есть добавление No будет отключать данный макрос.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Поведение, когда нужно сделать выбор из нескольких макро

Post by Smitis »

Shmuel wrote:Насчёт "правиться не будет" никто не говорил. Если будет предложен алгоритм, который удобнее или логичнее существующего, можно будет и поправить.
Когда обсуждали, недавно, введение LAlt, LCtrl, LShift решили этого не делать. Но тем не менее, регэкспы в key делают именно это плюс теряют простой Alt (Ctrl,Shift) как любой Alt. По-моему, это не логично.
Разум когда-нибудь победит.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Поведение, когда нужно сделать выбор из нескольких макро

Post by John Doe »

Shmuel wrote:Предлагаю добавить функцию-заглушку NoMacro, то-есть добавление No будет отключать данный макрос.
Т.е. для отключения надо будет просто вставить No перед Macro {...?
Думаю то что надо.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Поведение, когда нужно сделать выбор из нескольких макро

Post by Smitis »

Предлагаю добавить функцию-заглушку NoMacro, то-есть добавление No будет отключать данный макрос.
+1
Разум когда-нибудь победит.
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Поведение, когда нужно сделать выбор из нескольких макро

Post by Shmuel »

Smitis wrote:Когда обсуждали, недавно, введение LAlt, LCtrl, LShift решили этого не делать. Но тем не менее, регэкспы в key делают именно это плюс теряют простой Alt (Ctrl,Shift) как любой Alt. По-моему, это не логично.
Насколько я понимаю, эти недостатки всплывают только при конфликте макросов с простой спецификацией, с одной стороны, и с регекспами, с другой. То-есть регексп побеждает. Но я не знаю пока, как это лечить, и надо ли. Можно применять регекспы отдельно, простые ключи или их списки - отдельно. Не было регекспов, не было проблемы. В конце концов, никто ведь не заставляет пользоваться регекспами.

Предложите точную спецификацию, какое должно быть поведение, тогда можно будет говорить конкретнее.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Поведение, когда нужно сделать выбор из нескольких макро

Post by John Doe »

Shmuel wrote:При нажатии RAltA отдаётся предпочтение /R?AltA/ (точное совпадение) по отношению к AltA (неточное совпадение).
Выше говорилось что "Alt" неявно представляет собой "Alt RALt".
Значит предпочтения быть не должно, и надо считать оба варианта точными совпадениями.
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Поведение, когда нужно сделать выбор из нескольких макро

Post by Shmuel »

John Doe wrote:Выше говорилось что "Alt" неявно представляет собой "Alt RALt".
Значит предпочтения быть не должно, и надо считать оба варианта точными совпадениями.
До 3054 было предпочтение, а теперь быть не должно? Почему? Что изменилось?
Post Reply

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