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

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 12234
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 32 times
Been thanked: 162 times

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

Post by John Doe » Mon 26 Nov, 2018 12:18

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: 107 times
Been thanked: 8 times

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

Post by sToLp » Mon 26 Nov, 2018 13:01

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: 12234
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 32 times
Been thanked: 162 times

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

Post by John Doe » Mon 26 Nov, 2018 13:29

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: 107 times
Been thanked: 8 times

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

Post by sToLp » Mon 26 Nov, 2018 15:26

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 15 times

User avatar
John Doe
Бюрократ
Posts: 12234
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 32 times
Been thanked: 162 times

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

Post by John Doe » Mon 26 Nov, 2018 16:59

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

User avatar
John Doe
Бюрократ
Posts: 12234
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 32 times
Been thanked: 162 times

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

Post by John Doe » Mon 26 Nov, 2018 17:25

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: 107 times
Been thanked: 8 times

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

Post by sToLp » Mon 26 Nov, 2018 18:18

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

User avatar
John Doe
Бюрократ
Posts: 12234
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 32 times
Been thanked: 162 times

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

Post by John Doe » Mon 26 Nov, 2018 19:19

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

А куда я клоню с condition объясню на примере (позже).

buniak_a_h
Posts: 705
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 67 times
Been thanked: 19 times
Contact:

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

Post by buniak_a_h » Mon 26 Nov, 2018 21:34

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: 107 times
Been thanked: 8 times

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

Post by sToLp » Tue 27 Nov, 2018 05:38

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

1. В определение стационарных макросов добавлено опциональное поле sortpriority - для управления
порядком расположения макросов в меню "Исполнить макрос".

User avatar
John Doe
Бюрократ
Posts: 12234
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 32 times
Been thanked: 162 times

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

Post by John Doe » Tue 27 Nov, 2018 12:00

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: 107 times
Been thanked: 8 times

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

Post by sToLp » Tue 27 Nov, 2018 13:56

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

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

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

User avatar
John Doe
Бюрократ
Posts: 12234
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 32 times
Been thanked: 162 times

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

Post by John Doe » Tue 27 Nov, 2018 14:16

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: 107 times
Been thanked: 8 times

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

Post by sToLp » Wed 28 Nov, 2018 13:00

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 13 times
Last edited by sToLp on Wed 28 Nov, 2018 16:00, edited 1 time in total.

Shmuel
Posts: 5727
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 203 times

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

Post by Shmuel » Wed 28 Nov, 2018 13:16

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

User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 107 times
Been thanked: 8 times

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

Post by sToLp » Wed 28 Nov, 2018 14:12

Shmuel wrote:
Wed 28 Nov, 2018 13:16
sToLp, Что у вас монитор такой шикарный или свёрткой в редакторе пользуетесь?
И то — вот сейчас под рукой старый Philips 298X4 29” (а периодически могут быть и намного лучше), и другое — изредка плагин EditWrap с его штатным макросом, а также, пожалуй, и третье — привычка, и четвёртое — отсутствие поводов делать иначе. И поэтому если Вы порекомендуете какой максимальной длины должны быть строки, то, полагаю, что сумею приноровиться.

Post Reply

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