Улучшение меню с дублирующимися хоткеями

Здесь обсуждается всё, что касается макросов.
User avatar
sToLp
Posts: 691
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

Улучшение меню с дублирующимися хоткеями

Postby sToLp » Wed 17 Dec, 2014 17:59

Latest post of the previous page:

В моём посте приведена отсылка на правленый уже к тому времени макрос №3:
sToLp wrote:Ранее я упоминал о попытке приспособить макрос №3 ...
а это было:
sToLp wrote:Для этого я внёс следующие немудрёные дополнения в 2 его строки:
key="/^[RL]AltShift(BS|Add|Subtract|Multiply|Divide|BackSlash|ShiftBackSlash|.|Shift.|Space)$/";
и
local key = akey(1):match("R?AltShift(.+)").

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

Улучшение меню с дублирующимися хоткеями

Postby John Doe » Wed 17 Dec, 2014 18:04

sToLp, Бррр.
Рекомендую объединить ваши рекомендации в одном посте.

User avatar
sToLp
Posts: 691
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

Улучшение меню с дублирующимися хоткеями

Postby sToLp » Wed 17 Dec, 2014 18:25

"Рекомендации" — это громко сказано. Скорее уж, мои консультации у Вас.
Добавил в свой первый сегодняшний пост (в спойлер) макрос в последней по времени используемой мною редакции.

User avatar
sToLp
Posts: 691
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

Улучшение меню с дублирующимися хоткеями

Postby sToLp » Mon 05 Jan, 2015 18:17

sToLp wrote:попытки приспособить другие макросы из набора SmartMenuFilter к бесконфликтной работе с сабжевыми продолжаются

Докладываю о результатах на текущий момент.

Практика убеждает меня, что фильтрация меню по хоткеям (которую обеспечивают сабжевые макросы) существенно удобнее и быстрее других известных мне видов фильтров фаровских меню.

Следующим по удобству использования, по моему убеждению, является немодальный фильтр меню — это №3 из SmartMenuFilter (по-моему, всё-таки удобнее набирать искомый текст с нажатыми модификаторами, чем отдельно включать/выключать фильтр).

На третьем месте — штатный фильтр, вызываемый правым альтом (вполне достаточно чтобы периодически при необходимости включать\выключать его).

Автофильтр же из SmartMenuFilter я фактически не использую. Очень уж непрактичным показалось мне оставлять фильтр в режиме "авто" — мешает и работе с хоткеями, и немодальному фильтру. Но и даже если бы был возможен только один фильтр (нативный) без других вариантов, то всё равно как-то удобнее включать\выключать его, когда необходимо, чем держать его постоянно включённым.

На нижеприведённой картинке видно на какие шорткаты в конце концов оказались повешены применяемые мною макросы фильтрации в меню:

hotkey_filter.png
hotkey_filter.png (105.41 KiB) Viewed 2536 times

Может быть не лишне отметить, что поскольку сочетания CtrlAlt-key заняты в фильтре немодальных меню, то CtrlAltBS не вяжется в систему данных макросов, и поэтому этот шорткат заменён на CtrlAltShiftBS. И, между прочим, он прижился не только в фильтрах, но вообще во всех случаях применения XLat.

В целом получился замечательный комбайн. Большое Вам спасибо за разработку составляющих его макросов и их публикацию!
Last edited by sToLp on Mon 05 Jan, 2015 18:30, edited 1 time in total.

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

Улучшение меню с дублирующимися хоткеями

Postby John Doe » Mon 05 Jan, 2015 18:29

sToLp wrote:Source of the post Автофильтр же из SmartMenuFilter я фактически не использую. Очень уж непрактичным показалось мне оставлять фильтр в режиме "авто" — мешает и работе с хоткеями, и немодальному фильтру
Хоткеям мешать может. Но напомню, что автофильтр включается раздельно для каждого меню/списка, а значит можно активировать выборочно только там, где нет хоткеев (например в историях).

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

Конец фразы я не совсем понял: зачем использовать немодальный фильтр одновременно с автофильтром?

sToLp wrote:Source of the post CtrlAltL не вяжется в систему данных макросов
Там вообще-то функцию CtrlAltL выполняет макрос на LAlt.

User avatar
sToLp
Posts: 691
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 31 times
Been thanked: 5 times

Улучшение меню с дублирующимися хоткеями

Postby sToLp » Mon 05 Jan, 2015 18:58

John Doe wrote:напомню, что автофильтр включается раздельно для каждого меню/списка, а значит можно активировать выборочно только там, где нет хоткеев (например в историях).

Но даже если в меню хоткеи есть, всё зависит от того, как вы с ними хотите работать: например я даже в таких меню чаще использую фильтр (напомню что при включенном автофильтре хоткеи тоже доступны, посредством двойного нажатия).
Спасибо за разъясняющие рекомендации! Похоже, что к автофильтру надо бы ещё присмотреться.
John Doe wrote:зачем использовать немодальный фильтр одновременно с автофильтром?
Так вместе их я и не использую. Потому что пока немодальный фильтр мне кажется сподручнее автофильтра.
John Doe wrote:
sToLp wrote:Source of the post CtrlAltL не вяжется в систему данных макросов
Там вообще-то функцию CtrlAltL выполняет макрос на LAlt.
LAlt у меня занят совсем другим макросом. И речь не о фиксации фильтра, а о переключении из режима модального фильтра в режим нативного фильтра и обратно. Порой это бывает полезно, когда надо отвлечься на некоторое время, например, и при опробовании и сопоставлении фильтров тоже.

User avatar
HaRT
Moderator
Posts: 7877
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 62 times
Been thanked: 93 times

Улучшение меню с дублирующимися хоткеями

Postby HaRT » Mon 09 May, 2016 15:12

Спасибо за удобный скрипт.
Пара багрепортов (Far Manager v3.0 build 4665 x86 (2016-05-09)):
John Doe wrote:Source of the post Если использовать хоткей с модификатором Ctrl, то хоткей срабатывает независимо от того, есть ли в списке дубликаты.
1. Не то чтобы мне это было очень важно, но при нажатии Ctrl-ГорячаяКлавиша не происходит ровно ничего — ни в изначальном меню, ни в отфильтрованном по хоткею (проверял на меню Plugin commands, User menu, EMenu).
John Doe wrote:Source of the post При первом нажатии в списке остаются только элементы с хоткеем, соответствующем нажатой клавише.
2. Очень странно взаимодействует с выпадающими списками в диалогах. Например (язык интерфейса английский, пользуюсь только шоткатами/хоткеями), открываю Find file (AltF7), там открываю search area (AltA), там выбираю In PATH folders (P), затем снова открываю выпадашку (CtrlDown) и вижу, что в ней , притом тот, который был в тот момент текущим. Я бы ожидал, что раз уж скрипт обслуживает этот список, то чтобы, как в меню, элементы отфильтровались, но список бы не закрылся.
В аналогичном сценарии для RESearch после выбора первого элемента (N) получается и вовсе .
Last edited by HaRT on Mon 09 May, 2016 15:30, edited 1 time in total.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
HaRT
Moderator
Posts: 7877
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 62 times
Been thanked: 93 times

Улучшение меню с дублирующимися хоткеями

Postby HaRT » Mon 09 May, 2016 16:05

И несколько пожеланий:
1. Как-то индицировать, что меню отфильтровано, — например, как для обычного фильтра “[ТутГорячаяКлавиша]” в заголовке меню, тем более, что использование „горячего символа“ в качестве обычного фильтра даёт именно такой результат.
2. Добавить Backspace в качестве клавиши, отменяющей фильтр по хоткею (а в идеале также предоставить возможность оставить только его). Базовую часть я себе тривиальным образом сделал; сюда же написал, чтобы дать шанс другим получить это из коробки.
3. Поддержать Alt-позиционирование на горячие клавиши, для ввода которых требуется нажатие Shift (например ‘#’, ‘_’).
Last edited by HaRT on Mon 09 May, 2016 22:30, edited 1 time in total.
Reason: Тривиальное добавление BS приводит к закономерному нарушению поведения
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
HaRT
Moderator
Posts: 7877
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 62 times
Been thanked: 93 times

Улучшение меню с дублирующимися хоткеями

Postby HaRT » Mon 09 May, 2016 18:57

И ещё одна неприятность: в присутствии ConcurrentHotkeys стандартный скрипт AltScreens перестаёт работать — открывается список окон, а в нём происходит всего лишь позиционирование. Добавление flags = 'NoSendKeysToPlugins'; не помогает; пришлось дописать if Area.Menu then Keys'Enter' end.
Last edited by HaRT on Mon 09 May, 2016 22:38, edited 1 time in total.
Reason: Приложил AltScreenExt — улучшенный код AltScreens
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 4903
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 9 times
Been thanked: 118 times

Улучшение меню с дублирующимися хоткеями

Postby Shmuel » Mon 09 May, 2016 19:04


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

Улучшение меню с дублирующимися хоткеями

Postby John Doe » Mon 09 May, 2016 22:46

Прежде всего, скрипт надо бы пересмотреть, т.к. в своё время было сделано немало приседаний вокруг багов фара (ссылки на мантис в коде), а в фаре кое-что правилось (билд 4640).

HaRT wrote:Source of the post Очень странно взаимодействует с выпадающими списками в диалогах
Возможно связано с недавними изменениями, в данном случае скорее всего стоит запретить работу скрипта в комбобоксах.

HaRT wrote:Source of the post стандартный скрипт AltScreens перестаёт работать
Кто-то добрый решил что нам это не надо

Update
Обойти можно изменив в событии D91B58E5-4C32-4384-B205-D7895A4EC037 condition на следующий:

Code: Select all

  condition=function(Event,param) return Event==F.DE_DLGPROCINIT and far.MacroGetState()==F.MACROSTATE_EXECUTING_COMMON end;

В идеале проверять также на MACROSTATE_RECORDING_COMMON.

А MACROSTATE_NOMACRO у нас не бывает никогда, извините.


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

Who is online

Users browsing this forum: Google Feedfetcher and 1 guest