Замечу, что это возможно реализовать и текущими средствами, использую функцию condition, которая бы изменяла приоритет в зависимости от некоторого внешнего флага.
Меню конфликта как средство организации макросов
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Меню конфликта как средство организации макросов
Last edited by John Doe on Thu 29 Nov, 2018 13:48, edited 1 time in total.
Поведение, когда нужно сделать выбор из нескольких макросов
John Doe,
Благодарю Вас за разъяснения!
По функции eval я как раз и изложил своё предложение сюда, а не на мантис, чтобы сначала понять насколько это возможно и не засорять мантис бесперспективным вишем.
А то, что именно Вы предлагаете сделать через condition, мне совсем не понятно. Видимо, мне сильно не хватает компетенции. В том числе мне непонятно что вообще такое внешний флаг и как condition может изменить уже заданный приоритет?
М.б. Вы приведёте некий пример, на основе которого я смог бы попытаться это повторить?
Благодарю Вас за разъяснения!
По функции eval я как раз и изложил своё предложение сюда, а не на мантис, чтобы сначала понять насколько это возможно и не засорять мантис бесперспективным вишем.
Если я правильно Вас понял, то суть моего предложения мне удалось таки изложить более менее доходчиво. И я надеюсь, что в перспективе оно так или иначе будет реализовано.
Текущими средствами реализовать оперативное подключение к базовым меню выбора макросов показа макросов с пониженным приоритетом и отключение их показа у меня получается с помощью невалидных ключей. Но это очень громоздко.
А то, что именно Вы предлагаете сделать через condition, мне совсем не понятно. Видимо, мне сильно не хватает компетенции. В том числе мне непонятно что вообще такое внешний флаг и как condition может изменить уже заданный приоритет?
М.б. Вы приведёте некий пример, на основе которого я смог бы попытаться это повторить?
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Поведение, когда нужно сделать выбор из нескольких макросов
Изложено вполне доходчиво, но что касается цитаты, то выше я не подразумевал каких-либо конкретных дополнительных возможностей (хотя и свои задумки были).
Возможно стоит проиллюстрировать примером.
В мануале же сказано, что численное значение, возвращённое condition, используется как приоритет.
Поведение, когда нужно сделать выбор из нескольких макросов
Да и я не тешусь неоправданными ожиданиями. Просто если проблему не обозначить, то она и решена быть не может. И при этом я вполне осознаю, что после того, как проблему обрисуешь, стопроцентной гарантии её решения может и не быть. Но высветить то её надо непременно.
В качестве подходящего примера прилагаю папку с 3 реальными рабочими файлами с макросами, работающими из редактора Far`а с плагином LuaFAR Search (версия 3.43.4). В одном из файлов содержится базовый набор макросов, вызываемых из редактора по AltShiftS, в другом файле — их дубль с невалидными ключами (ключи те же, но начинаются на знак подчёркивания "_") и добавочно ещё 4 макроса с теми же невалидными ключами для включения в расширенный вариант меню выбора макросов, а в третьем файле находится макрос-переключатель (работает по двойному нажатию на Shift) между обычным и расширенным вариантами меню.
Об этом я знаю и даже пару раз применил. Но ведь это же приоритет данного макроса, а мне то ведь желательно из данного макроса обратиться к внешним макросам с одним и тем же ключом, но с разными приоритетами, и всех их вывести в одно меню. Или я что-то недопонял про приоритеты, устанавливаемые в condition?
- Attachments
-
- primer.7z
- (3.73 KiB) Downloaded 84 times
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Поведение, когда нужно сделать выбор из нескольких макросов
Да, и для этого в каждый из этих низкоприоритетных макросов придётся добавить (простенький) condition.
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Поведение, когда нужно сделать выбор из нескольких макросов
Громоздким вы назвали "{{ переключатель..."?
Если да, то хочу вас заверить, там всё весьма лаконично)
Поведение, когда нужно сделать выбор из нескольких макросов
Переключатель в данном случае как раз удачно получился небольшим и одним на все макросы. А вот в каждый из участвующих в обработке макросов нужно добавить дополнительный, причём невалидный, ключ. Т.е. произвести фактически удвоение макросов. Плюс те макросы, которые условно можно назвать "подвальными". Они ведь все тоже с тем же невалидным ключом. И таким образом получается громоздилово макросов, которое и в макробраузере выпячивается однообразными блоками-пятнами. А когда будет реализована возможность подключать в меню выбора макросов макросы с пониженным приоритетом этого громоздилова можно будет избежать.
Во-первых, тоже не маленькая работёнка, которая после реализации мною предложенного вовсе не нужна была бы. А во-вторых, и в данном случае для меня в главных, я даже не берусь угадывать в какую сторону гадать на что Вы намекаете.
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Поведение, когда нужно сделать выбор из нескольких макросов
Хм. Я бы не дублировал, а довольствоваться бы тем, что вызывал бы "подвальные" отдельным списком.
А куда я клоню с condition объясню на примере (позже).
- buniak_a_h
- Posts: 4265
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Поведение, когда нужно сделать выбор из нескольких макросов
А разве параметр
sortpriority
- это не то, что влияет на сортировку макросов в меню?
Last edited by buniak_a_h on Mon 26 Nov, 2018 21:35, edited 1 time in total.
Поведение, когда нужно сделать выбор из нескольких макросов
buniak_a_h,
Процитированная Вами запись как раз и предопределила появление поля
Процитированная Вами запись как раз и предопределила появление поля
sortpriority
, которое стало применяться несколькими часами позже:
shmuel 03.03.2016 21:40:00 +0200 - build 561
1. В определение стационарных макросов добавлено опциональное поле sortpriority - для управления
порядком расположения макросов в меню "Исполнить макрос".
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Поведение, когда нужно сделать выбор из нескольких макросов
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.
Обсуждение вышло за рамки темы, надо отделить. Или подклеить к связанному (если подскажите где подобное обсуждалось)
Поведение, когда нужно сделать выбор из нескольких макросов
Большое спасибо! Но внимательно его посмотреть смогу только попозже, когда освобожусь от неотложных работных дел.
Тема называется "Поведение, когда нужно сделать выбор из нескольких макросов".
Продолжается обсуждение проблемы вывода в меню выбора макросов макросов с любыми приоритетами. И мне представляется, что для нормального решения этой проблемы требуется вмешательство разработчиков. А, Вы, как я понял, полагаете, что её несложно решить ныне доступными средствами. Но пока что не понятно действительно ли это так. В том числе тот способ, который я сам применил на практике для решения проблемы, на мой взгляд, неудобоваримый, чрезмерно трудозатратный и полноценно проблему не решает. И обсуждение продолжает продолжаться. По-моему так.
Но если Вы, всё же, полагаете, что практичнее и полезнее будет выделить этот блок в отдельную тему, то я всё-таки возражать не стану. В таком случае, имхо, началом этого блока можно было бы считать первоначальное моё предложение, а далее — всё последовавшее за тем обсуждение.
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Поведение, когда нужно сделать выбор из нескольких макросов
Присмотрелся к вашим примерам, и действительно, дублировать весь код дважды это не годится, когда можно запросто автоматизировать:
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.
Поведение, когда нужно сделать выбор из нескольких макросов
"А Ларчик просто открывался.":
Тот набор макросов, который уже приводился выше в качестве примера, я облачил в предложенную Вами форму концепта, дополнил его макросом перехода между "обычной" и "расширенной" формами меню, и получился-таки вполне и практически применимый вариант вывода в меню выбора макросов макросов с пониженным приоритетом.John Doe wrote: ↑Tue 27 Nov, 2018 12:00Code: Select all
fullmenu = not fullmenu
Это только концепт, разумеется.Code: Select all
fullmenu and 100 or true
Большое Вам спасибо за представленный концепт приведения приоритетов макросов к
priority=100
и возврата к предустановленным величинам приоритетов! Вы были правы, утверждая, что этого можно добиться текущими средствами.- Attachments
-
- demonstration.7z
- (3.74 KiB) Downloaded 73 times
Last edited by sToLp on Wed 28 Nov, 2018 16:00, edited 1 time in total.
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Поведение, когда нужно сделать выбор из нескольких макросов
sToLp, вот мне непонятно, почему вы (и некоторые другие) делаете в своих файлах строки длиной 280 символов или больше. Что у вас монитор такой шикарный или свёрткой в редакторе пользуетесь?