Меню конфликта как средство организации макросов

Здесь обсуждается всё, что касается макросов.
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 »

sToLp wrote: Mon 26 Nov, 2018 09:12 Например, редко используемые макросы, справочные макросы и макросы, дублирующие нативные команды Far`а, можно было бы помечать пониженным приоритетом и в нужные моменты оперативно дополнять ими "базовые" меню выбора и также изымать их оттуда.
Замечу, что это возможно реализовать и текущими средствами, использую функцию condition, которая бы изменяла приоритет в зависимости от некоторого внешнего флага.
 ! Message from: John Doe
Начало обсуждения см. в теме Поведение, когда нужно сделать выбор из нескольких макросов
Last edited by John Doe on Thu 29 Nov, 2018 13:48, edited 1 time in total.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

John Doe,
Благодарю Вас за разъяснения!

По функции eval я как раз и изложил своё предложение сюда, а не на мантис, чтобы сначала понять насколько это возможно и не засорять мантис бесперспективным вишем.
John Doe wrote: Mon 26 Nov, 2018 12:13Вот как раз функционал работы с макросами имхо стоит реализовать заново, отдельной функцией, предусмотрев потенциальные интересные возможности.
Если я правильно Вас понял, то суть моего предложения мне удалось таки изложить более менее доходчиво. И я надеюсь, что в перспективе оно так или иначе будет реализовано.
John Doe wrote: Mon 26 Nov, 2018 12:18 Замечу, что это возможно реализовать и текущими средствами, использую функцию condition, которая бы изменяла приоритет в зависимости от некоторого внешнего флага.
Текущими средствами реализовать оперативное подключение к базовым меню выбора макросов показа макросов с пониженным приоритетом и отключение их показа у меня получается с помощью невалидных ключей. Но это очень громоздко.
А то, что именно Вы предлагаете сделать через condition, мне совсем не понятно. Видимо, мне сильно не хватает компетенции. В том числе мне непонятно что вообще такое внешний флаг и как 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 »

sToLp wrote: Mon 26 Nov, 2018 13:01 Если я правильно Вас понял, то суть моего предложения мне удалось таки изложить более менее доходчиво.
Изложено вполне доходчиво, но что касается цитаты, то выше я не подразумевал каких-либо конкретных дополнительных возможностей (хотя и свои задумки были).
sToLp wrote: Mon 26 Nov, 2018 13:01 Но это очень громоздко.
Возможно стоит проиллюстрировать примером.
sToLp wrote: Mon 26 Nov, 2018 13:01 как condition может изменить уже заданный приоритет?
В мануале же сказано, что численное значение, возвращённое condition, используется как приоритет.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

John Doe wrote: Mon 26 Nov, 2018 13:29выше я не подразумевал каких-либо конкретных дополнительных возможностей
Да и я не тешусь неоправданными ожиданиями. Просто если проблему не обозначить, то она и решена быть не может. И при этом я вполне осознаю, что после того, как проблему обрисуешь, стопроцентной гарантии её решения может и не быть. Но высветить то её надо непременно.
John Doe wrote: Mon 26 Nov, 2018 13:29Возможно стоит проиллюстрировать примером.
В качестве подходящего примера прилагаю папку с 3 реальными рабочими файлами с макросами, работающими из редактора Far`а с плагином LuaFAR Search (версия 3.43.4). В одном из файлов содержится базовый набор макросов, вызываемых из редактора по AltShiftS, в другом файле — их дубль с невалидными ключами (ключи те же, но начинаются на знак подчёркивания "_") и добавочно ещё 4 макроса с теми же невалидными ключами для включения в расширенный вариант меню выбора макросов, а в третьем файле находится макрос-переключатель (работает по двойному нажатию на Shift) между обычным и расширенным вариантами меню.
John Doe wrote: Mon 26 Nov, 2018 13:29В мануале же сказано, что численное значение, возвращённое condition, используется как приоритет.
Об этом я знаю и даже пару раз применил. Но ведь это же приоритет данного макроса, а мне то ведь желательно из данного макроса обратиться к внешним макросам с одним и тем же ключом, но с разными приоритетами, и всех их вывести в одно меню. Или я что-то недопонял про приоритеты, устанавливаемые в condition?
Attachments
primer.7z
(3.73 KiB) Downloaded 82 times
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 »

sToLp wrote: Mon 26 Nov, 2018 15:26 Но ведь это же приоритет данного макроса, а мне то ведь желательно из данного макроса обратиться к внешним макросам с одним и тем же ключом, но с разными приоритетами, и всех их вывести в одно меню.
Да, и для этого в каждый из этих низкоприоритетных макросов придётся добавить (простенький) 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 »

sToLp wrote: Mon 26 Nov, 2018 15:26 В качестве подходящего примера прилагаю папку с 3 реальными рабочими файлами
sToLp wrote: Mon 26 Nov, 2018 13:01 Но это очень громоздко.
Громоздким вы назвали "{{ переключатель..."?
Если да, то хочу вас заверить, там всё весьма лаконично)
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

John Doe wrote: Mon 26 Nov, 2018 17:25 Громоздким вы назвали "{{ переключатель..."?
Переключатель в данном случае как раз удачно получился небольшим и одним на все макросы. А вот в каждый из участвующих в обработке макросов нужно добавить дополнительный, причём невалидный, ключ. Т.е. произвести фактически удвоение макросов. Плюс те макросы, которые условно можно назвать "подвальными". Они ведь все тоже с тем же невалидным ключом. И таким образом получается громоздилово макросов, которое и в макробраузере выпячивается однообразными блоками-пятнами. А когда будет реализована возможность подключать в меню выбора макросов макросы с пониженным приоритетом этого громоздилова можно будет избежать.
John Doe wrote: Mon 26 Nov, 2018 16:59 и для этого в каждый из этих низкоприоритетных макросов придётся добавить (простенький) 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 »

sToLp wrote: Mon 26 Nov, 2018 18:18 А вот в каждый из участвующих в обработке макросов нужно добавить дополнительный, причём невалидный, ключ. Т.е. произвести фактически удвоение макросов.
Хм. Я бы не дублировал, а довольствоваться бы тем, что вызывал бы "подвальные" отдельным списком.

А куда я клоню с condition объясню на примере (позже).
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 »

Shmuel wrote: Thu 03 Mar, 2016 17:59 Идея 2: Добавить в определение макроса опциональное поле SortingPriority (0-100, default=50), тогда можно будет полностью управлять порядком макросов в меню.
А разве параметр sortpriority - это не то, что влияет на сортировку макросов в меню?
Last edited by buniak_a_h on Mon 26 Nov, 2018 21:35, edited 1 time in total.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

buniak_a_h,
Процитированная Вами запись как раз и предопределила появление поля sortpriority, которое стало применяться несколькими часами позже:
shmuel 03.03.2016 21:40:00 +0200 - build 561

1. В определение стационарных макросов добавлено опциональное поле sortpriority - для управления
порядком расположения макросов в меню "Исполнить макрос".
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 »

John Doe wrote: Mon 26 Nov, 2018 19:19 А куда я клоню с condition объясню на примере (позже).

Code: Select all

local fullmenu

Macro {
  area="Common"; key="Shift";
  action=function()
    fullmenu = not fullmenu
  end;
}

local function isFullMenu()
  return fullmenu and 100 or true
end

Macro {
  description="a1";
  area="Editor"; key="a";
  priority=50;
  condition=isFullMenu;
  action=function()
    --...
  end;
}
Macro {
  description="a2";
  area="Editor"; key="a";
  priority=50;
  condition=isFullMenu;
  action=function()
    --...
  end;
}
Macro {
  description="a3";
  area="Editor"; key="a";
  priority=40;
  condition=isFullMenu;
  action=function()
    --...
  end;
}
Это только концепт, разумеется.
В реальности вы захотите переменную флаг сделать доступной глобально (я бы модулем сделал), а при нажатии Shift - перевызывать меню.

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

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

Post by sToLp »

John Doe wrote: Tue 27 Nov, 2018 12:00 Это только концепт
Большое спасибо! Но внимательно его посмотреть смогу только попозже, когда освобожусь от неотложных работных дел.
John Doe wrote: Tue 27 Nov, 2018 12:00 Обсуждение вышло за рамки темы
Тема называется "Поведение, когда нужно сделать выбор из нескольких макросов".

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

Но если Вы, всё же, полагаете, что практичнее и полезнее будет выделить этот блок в отдельную тему, то я всё-таки возражать не стану. В таком случае, имхо, началом этого блока можно было бы считать первоначальное моё предложение, а далее — всё последовавшее за тем обсуждение.
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 »

sToLp wrote: Mon 26 Nov, 2018 18:18 А вот в каждый из участвующих в обработке макросов нужно добавить дополнительный, причём невалидный, ключ. Т.е. произвести фактически удвоение макросов.
Присмотрелся к вашим примерам, и действительно, дублировать весь код дважды это не годится, когда можно запросто автоматизировать:

Code: Select all

local function MMacro(m)
  m.key = m.key:gsub("%S+","%0 _%0")
  return Macro(m)
end
После чего все определения, в которые нужно добавить псевдоклавши, можно сделать заменив Macro на MMacro.
Last edited by John Doe on Wed 28 Nov, 2018 19:03, edited 1 time in total.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

sToLp wrote: Mon 26 Nov, 2018 18:18даже не берусь угадывать в какую сторону гадать на что Вы намекаете
"А Ларчик просто открывался.":
John Doe wrote: Tue 27 Nov, 2018 12:00

Code: Select all

fullmenu = not fullmenu

Code: Select all

fullmenu and 100 or true
Это только концепт, разумеется.
Тот набор макросов, который уже приводился выше в качестве примера, я облачил в предложенную Вами форму концепта, дополнил его макросом перехода между "обычной" и "расширенной" формами меню, и получился-таки вполне и практически применимый вариант вывода в меню выбора макросов макросов с пониженным приоритетом.

Большое Вам спасибо за представленный концепт приведения приоритетов макросов к priority=100 и возврата к предустановленным величинам приоритетов! Вы были правы, утверждая, что этого можно добиться текущими средствами.
Attachments
demonstration.7z
(3.74 KiB) Downloaded 72 times
Last edited by sToLp on Wed 28 Nov, 2018 16:00, edited 1 time in total.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

sToLp, вот мне непонятно, почему вы (и некоторые другие) делаете в своих файлах строки длиной 280 символов или больше. Что у вас монитор такой шикарный или свёрткой в редакторе пользуетесь?
Post Reply

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