О выводе в Меню выбора макроса макросов с пониженным приоритетом.

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

О выводе в Меню выбора макроса макросов с пониженным приоритетом.

Post by Ann »

В разделе "Стационарные макросы" Справки по системе макросов Far Manager %FarHome%\Encyclopedia\macroapi_manual.ru.chm сказано:
Допустимо более одного макроса на сочетание (key,area). В этом случае выполняется макрос с наибольшим приоритетом. Если есть более одного макроса с одинаковым наибольшим приоритетом – выводится меню выбора макроса.
Т.е., если есть единственный макрос с наивысшим из этой группы макросов приоритетом, то он исполняется (и меню не выводится). А при желании активировать макрос с пониженным приоритетом его нужно запускать из Macro Browser`а. Здесь всё понятно и подтверждается практикой.

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

И это, с моей точки зрения, было бы правильным, т.к. полноценно информировало бы пользователя о всех макросах, назначенных на данный ключ в данной макрообласти. Однако, похоже на то, что это, в определённых случаях не соответствует практике.

К примеру, когда у меня есть 2 макроса, назначенных на определённый ключ, и имеющих нормальный приоритет, и ещё 2 макроса, назначенных на другой определённый ключ, и также имеющих нормальный приоритет, и к ним добавляются ещё 2, назначенных на те же ключи, но с пониженными приоритетами, то первые четыре (с нормальным приоритетом) выводятся в меню выбора макроса, а вторые два (с пониженным приоритетом) — нет.

Code: Select all

Macro {
  description="test: макрос в редакторе на AltG с нормальным приоритетом (Ann)";
  area="Editor"; key="AltG"; -- key2="";
  flags=""; --sortpriority=; bdsize=43;
  id="91B9C1BC-E848-4D09-88B1-5C33A8BCA1EC"; --selected=true;
  --filemask     = "*.txt,*.cpp";
  -- priority=50; condition=function(key) end;
  action=function()
    local k=akey(1)
    far.Message(k,"приоритет нормальный:")
  end;
}

Macro {
  description="test: макрос в редакторе на AltG с нормальным приоритетом дубль (Ann)";
  area="Editor"; key="AltG"; -- key2="";
  flags=""; --sortpriority=; bdsize=43;
  id="1C6E37AA-8B77-48E1-8A04-8A55F9ECE531"; --selected=true;
  --filemask     = "*.txt,*.cpp";
  -- priority=50; condition=function(key) end;
  action=function()
    local k=akey(1)
    far.Message(k,"дубль: приоритет нормальный:")
  end;
}

Macro {
  description="test: макрос в редакторе на AltG с приоритетом 9 (Ann)";
  area="Editor"; key="AltG"; -- key2="";
  flags=""; --sortpriority=; bdsize=43;
  id="2F0BDFE0-AFEA-41AA-B547-E893D1C40A67"; --selected=true;
  --filemask     = "*.txt,*.cpp";
  priority=9; condition=function(key) end;
  action=function()
    local k=akey(1)
    far.Message(k,"приоритет 9:")
  end;
}

Macro {
  description="test: макрос в редакторе на CtrlAltG с нормальным приоритетом (Ann)";
  area="Editor"; key="CtrlAltG"; -- key2="";
  flags=""; --sortpriority=; bdsize=43;
  id="F956CEC6-9251-484D-812A-ED755F3D6523"; --selected=true;
  --filemask     = "*.txt,*.cpp";
  -- priority=50; condition=function(key) end;
  action=function()
    local k=akey(1)
    far.Message(k,"приоритет нормальный:")
  end;
}

Macro {
  description="test: макрос в редакторе на CtrlAltG с нормальным приоритетом дубль (Ann)";
  area="Editor"; key="CtrlAltG"; -- key2="";
  flags=""; --sortpriority=; bdsize=43;
  id="DFED7A31-1AEB-4986-A428-AED4558DF1D2"; --selected=true;
  --filemask     = "*.txt,*.cpp";
  -- priority=50; condition=function(key) end;
  action=function()
    local k=akey(1)
    far.Message(k,"дубль: приоритет нормальный:")
  end;
}

Macro {
  description="test: макрос в редакторе на CtrlAltG с приоритетом 9 (Ann)";
  area="Editor"; key="CtrlAltG"; -- key2="";
  flags=""; --sortpriority=; bdsize=43;
  id="84B174B0-47B4-403E-ABBF-F270B1523818"; --selected=true;
  --filemask     = "*.txt,*.cpp";
  priority=9; condition=function(key) end;
  action=function()
    local k=akey(1)
    far.Message(k,"приоритет 9:")
  end;
}
Т.е., если я ничего не напутал, то нужно бы либо привести практику в соответствии со Справкой, либо уточнить Справку. Персонально я голосую за первый вариант.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

О выводе в Меню выбора макроса макросов с пониженным приоритетом.

Post by Shmuel »

Ann, уберите из макросов condition=function(key) end; и всё будет работать как вам надо.
Вы поставили запрещающий condition и хотите, чтобы эти макросы появлялись в меню? Так не бывает.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

О выводе в Меню выбора макроса макросов с пониженным приоритетом.

Post by John Doe »

@Ann
Я не знаю какую именно задачу решаете вы, но расскажу о себе.
Если используешь какое-то значительное число макросов (с разнымы флагами, condition, регэкспами в качестве ключей), то в какой-то момент вопрос "Так, а что у меня вообще назначено на Ctrl-Alt-K" перестаёт быть тривиальным.

Именно с решения этой задачи я и начал свой Macro Browser alt.
Начинался он с простой функции: удерживаю Ctrl-Numlock, появляется окошко с запросом клавиши, нажимаю искомую комбинацию, и получаю список всех подходящих макросов (из разных областей, но только потому что мне так удобно)
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:

О выводе в Меню выбора макроса макросов с пониженным приоритетом.

Post by buniak_a_h »

Ann, правильно ли я понимаю, что Вы хотите в списке макросов, повешенных на один и тот же ключ, видеть также макросы с приоритетом ниже максимального? Если да, то тогда в чём будет смысл priority? Я где-то встретил, что макросы с пониженным приоритетом выводятся после приоритетных. Но для этого есть sortpriority.
Как-то Вы всё усложняете…
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

О выводе в Меню выбора макроса макросов с пониженным приоритетом.

Post by Ann »

buniak_a_h wrote: Sun 21 Feb, 2021 17:57правильно ли я понимаю, что Вы хотите в списке макросов, повешенных на один и тот же ключ, видеть также макросы с приоритетом ниже максимального? Если да, то тогда в чём будет смысл priority? Я где-то встретил, что макросы с пониженным приоритетом выводятся после приоритетных. Но для этого есть sortpriority.
Могут быть (у меня такие есть, не очень много, но есть) меню выбора макроса, в которых выведены несколько макросов с повышенным приоритетом и несколько с пониженным. И в каждом из разделов применена ещё и сортировка по sortpriority. Это связано, в частности, с тем, что меню выбора очень удобно использовать одновременно и по прямому назначению выбора макроса, и, вместе с тем, как справку, дающую возможность широкого обзора охватываемой данными макросами сферы их действия.

Вот практический .

Если это и усложнение (которое у меня получается без труда и поэтому я не ощущаю его как усложнение) с точки зрения кодирования, то с позиции пользователя это существенное упрощение в применении.
Post Reply

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