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

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

Latest post of the previous page:

sToLp wrote: Sun 22 Oct, 2017 20:08Если, при этом, хоткеи/шорткаты, первые из содержащихся в этом поле (т.е. проставленные пользователем в самом его начале), будут дополнительно выводиться в конце строк данного меню (вслед за содержанием поля description),
Совсем автоматически не будут, но ваш скрипт может и это делать.

Но я тут подумал, что с дополнительным полем не так всё просто: сторонний скрипт (ваш) должен как-то получить к нему доступ, и мне пока не ясно как.

Одно из возможных направлений — возможность заменить меню конфликта макросов своей функцией (ещё одна тема для мантиса).
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: Sun 22 Oct, 2017 20:08
Если для описаний, то и description можно сейчас многострочный создавать.
Кажется, я пропустил информацию об этом.
Не было об этом никакой специальной информации.
Любая строка может содержать символы перевода строки, вот и всё. Но как вы это собрались использовать я не знаю.
sToLp wrote: Sun 22 Oct, 2017 20:08[...]Ведь одновременно то эти позиции, кажется, не совместимы?
Ничего об этом не знаю. Вы просили только многострочное поле, которое можно будет где-то там как-то использовать.
sToLp wrote: Sun 22 Oct, 2017 20:08Хотелка вынесена на обсуждение, чтобы выяснить: не предпочтительнее ли и для других форумчан был бы переход к началу макроса
Если что, то такая возможность есть давным давно, если использовать rebind + альтернативные макробраузеры (на выбор: macrobrowseralt или luamanager).
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 »

Редактирование макроса из Macro Browser: переходить к началу спецификации, а не к определению action (отделил обсуждение, поскольку вопрос касается не только меню конфликта макросов)

Вопрос описания макросов тоже выходит за рамки данной темы, к тому же существует специальная: Скрипты: система их названий и описаний. Обсуждение продолжил там.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

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

А нельзя ли функцию eval(S[,Mode[,Lang]]) дополнить ещё одним опциональным параметром что-то типа: eval(S[,Mode[,Lang[,Prior]]]), с допустимыми значениями параметра Prior 0 и 1, где 0: значение по умолчанию, а 1: игнорировать priority?

Чтобы eval могла отключать влияние priority и, тем самым позволяла бы выводить в меню выбора макросов макросы с каждым приоритетом.

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

Например, редко используемые макросы, справочные макросы и макросы, дублирующие нативные команды Far`а, можно было бы помечать пониженным приоритетом и в нужные моменты оперативно дополнять ими "базовые" меню выбора и также изымать их оттуда. И делать это можно было бы простыми макросами-переключателями, применяя эту самую eval, дополненную новым параметром.
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 А нельзя ли функцию eval(S[,Mode[,Lang]]) дополнить ещё одним опциональным параметром
Безотносительно сути пожелания: функцию eval необходимо оставить в покое.
Она и так страшна, поскольку (а) совмещает черезчур много функций (б) в целях совместимости поддеживаются и экзотические, в современной практике ненужные.

Вот как раз функционал работы с макросами имхо стоит реализовать заново, отдельной функцией, предусмотрев потенциальные интересные возможности.
 ! Message from: John Doe
Часть сообщений выделена в отдельную тему: Меню конфликта как средство организации макросов
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

Shmuel wrote: Wed 28 Nov, 2018 14:20Но раз уже вы спросили - я стараюсь не превышать длину 120 символов.
Спасибо за информацию! Для получения первого опыта я привёл длину строк в макросах своего сообщения в соответствие с этой величиной. И заодно сделал в них некоторые маленькие оформительские поправки без изменения функциональности.

Что же касается сути проблемы ситуативного включения в меню выбора макросов также и макросов с пониженным приоритетом, то, на мой взгляд, решение этого вопроса, получившееся благодаря изобретательности John Doe, всё же больше подходит для отдельных энтузиастов, а не для массы "рядовых" пользователей. Исходя из моего опыта, предпочтительнее было бы иметь "централизованное" решение. И желательно бы в форме некой новой команды, подаваемой клавишей или клавишесочетанием (м.б. даже тем же двойным нажатием Shift`а) непосредственно в меню выбора макросов, и обеспечивающей включение и выключение показа в этом меню макросов с пониженным приоритетом.

И если Вы не против, то я всё-таки отправил бы такой виш на мантис.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

sToLp, для отправки виша на мантис не нужно разрешения.
За всей вашей перепиской с John Doe я не очень тщательно следил, поэтому желательно сформулировать виш на мантисе, желательно отделив главное от менее главного. Если ваш пост выше излагает всё, что требуется, то это выглядит не слишком сложно для реализации.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

Shmuel wrote: Wed 28 Nov, 2018 17:05 sToLp, для отправки виша на мантис не нужно разрешения.
Отправил.
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: Wed 28 Nov, 2018 16:51 на мой взгляд, решение этого вопроса , получившееся благодаря изобретательности John Doe, всё же больше подходит для отдельных энтузиастов, а не для массы "рядовых" пользователей.
На мой взгляд перед массой рядовых пользователей вопрос это просто не стоит, а ваш случай весьма специфичен.
Имхо, конечно.
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: Wed 28 Nov, 2018 18:13На мой взгляд перед массой рядовых пользователей вопрос этот просто не стоит, а ваш случай весьма специфичен.
Со стороны, возможно, виднее. Однако первое, что я предполагаю сделать, когда будет реализован виш, это спрятать "подпол" почти всю уйму моих банальных макросов, дублирующих нативные команды Far`а. И, насколько я знаю, у многих рядовых пользователей таких команд тоже поднакапливается немало. А к специфичным подобные макросы навряд ли можно отнести. Во всяком случае, вреда от реализации виша я не предполагаю.
John Doe wrote: Wed 28 Nov, 2018 18:23 1. Макрос Common/Shift как отдельный врядли нужен, лучше включите его в ваш Menu/Shift
Спасибо за совет! Обязательно попробую сделать.
John Doe wrote: Wed 28 Nov, 2018 18:23 2. condition=LFS_Exist and isFullMenu; это работает не так, как вам хотелось. Необходимо объединить в одну функцию.
Подумаю и попытаюсь, но не уверен, что это у меня получится.
John Doe wrote: Wed 28 Nov, 2018 18:23 3. Если вы хотите использовать тот же подход в другом макрофайле, то как уже говорилось выше, необходимы изменения (глобальная переменная либо модуль).
А вот по этому пункту без Вашей помощи я точно пока что ни чего не смогу сделать, поскольку ни того, ни другого ни разу и не пробовал даже, кажется.
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: Wed 28 Nov, 2018 19:02 И, насколько я знаю, у многих рядовых пользователей таких команд тоже поднакапливается немало.
Редкоиспользуемые команды накапливается конечно, но то как с этим справляетесь вы - весьма специфично.
Обычно же приоритеты используются для того, чтобы отсеять ненужные в данном контексте макросы (в идеале до 1 макроса, который сразу же и запустится, без меню).

Я не утверждаю, что ваш способ плох, отнюдь. Просто он не универсален.
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: Wed 28 Nov, 2018 19:20 Обычно же приоритеты используются для того, чтобы отсеять ненужные в данном контексте макросы (в идеале до 1 макроса, который сразу же и запустится, без меню).

Я не утверждаю, что ваш способ плох, отнюдь. Просто он не универсален.
Так он же никогда и не претендовал на универсальность. Однако, согласитесь, что он и не противоречит указанному Вами способу, позволяющему "отсеять ненужные в данном контексте макросы", не препятствует его применению. А, как раз, дополняет его и, тем самым, расширяет возможности применения приоритетов. А это и есть ни что иное как некоторое прибавление (небольшое, но заметное) к универсальности полю priority.
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: Thu 29 Nov, 2018 20:24 Однако, согласитесь, что он и не противоречит указанному Вами способу, позволяющему "отсеять ненужные в данном контексте макросы"
Вот именно что "противоречит", ведь используется в противоположных целях)

Но действительно нет препятствий для того чтобы совмещать оба варианта, просто ваш - не самоочевиден, поэтому я и постарался детально описать его в отдельной теме.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

После того как в меню выбора макросов стали показываться макросы с пониженным приоритетом
shmuel 01.12.2018 22:09:18 +0200 - build 676

1. M#3684: Включать и выключать показ макросов с пониженным приоритетом в меню выбора макросов.
--> включение и выключение решено не делать, а показывать их всегда после макросов с наивысшим
приоритетом, отделёнными от них сепаратором.
"всплыли" два полезных, но позабытых-позаброшенных редко использовавшихся макроса. И, вполне возможно, что это не последнее "всплытие".

Это приятный дополнительный бонус к очередному удачному нововведению.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

shmuel 01.12.2018 22:09:18 +0200 - build 676

1. M#3684: Включать и выключать показ макросов с пониженным приоритетом в меню выбора макросов.
--> включение и выключение решено не делать, а показывать их всегда после макросов с наивысшим
приоритетом, отделёнными от них сепаратором.
Полагаю весьма полезным публикацию следующего разъяснения к выше акцентированному моменту:
Shmuel wrote: "Показывать всегда" относится к макросам с низким приоритетом в контексте, когда меню "исполнить макрос" выводится.

Меню "исполнить макрос" выводится только тогда, когда система сама не может определить, который макрос надо исполнить, и перекладывает выбор макроса для исполнения на пользователя.

Если вы хотите, чтобы это меню выводилось всегда, просто не допускайте ситуации, когда приоритет одного из макросов выше остальных.
ИМХО, можно также добавить, что в подобном случае при наличии одного или нескольких макросов с пониженным приоритетом, назначенных на тот же ключ, что и макрос с наивысшим приоритетом, посмотреть их можно, например, посредством макробраузера.
Post Reply

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