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

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

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

Post by sToLp » Wed 17 Dec, 2014 17:59

Latest post of the previous page:

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

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

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

Post by John Doe » Wed 17 Dec, 2014 18:04

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

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

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

Post by sToLp » Wed 17 Dec, 2014 18:25

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

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

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

Post by sToLp » Mon 05 Jan, 2015 18:17

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

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

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

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

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

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

На нижеприведённой картинке видно на какие шорткаты в конце концов оказались повешены применяемые мною макросы фильтрации в меню:
hotkey_filter.png
hotkey_filter.png (105.41 KiB) Viewed 7593 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: 12463
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 198 times

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

Post by John Doe » Mon 05 Jan, 2015 18:29

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

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

Конец фразы я не совсем понял: зачем использовать немодальный фильтр одновременно с автофильтром?
sToLp wrote: CtrlAltL не вяжется в систему данных макросов
Там вообще-то функцию CtrlAltL выполняет макрос на LAlt.

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

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

Post by sToLp » Mon 05 Jan, 2015 18:58

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

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

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

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

Post by HaRT » Mon 09 May, 2016 15:12

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

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

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

Post by HaRT » Mon 09 May, 2016 16:05

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

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

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

Post by HaRT » Mon 09 May, 2016 18:57

И ещё одна неприятность: в присутствии ConcurrentHotkeys стандартный скрипт AltScreens перестаёт работать — открывается список окон, а в нём происходит всего лишь позиционирование. Добавление flags = 'NoSendKeysToPlugins'; не помогает; пришлось дописать if Area.Menu then Keys'Enter' end.
Last edited by HaRT on Thu 12 Sep, 2019 23:30, edited 2 times in total.
Reason: Исправлено поведение в модальных диалогах (не срабатывали мнемоники Alt+Цифра из полей ввода)
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

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

Post by Shmuel » Mon 09 May, 2016 19:04


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

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

Post by John Doe » Mon 09 May, 2016 22:46

Прежде всего, скрипт надо бы пересмотреть, т.к. в своё время было сделано немало приседаний вокруг багов фара (ссылки на мантис в коде), а в фаре кое-что правилось (билд 4640).
HaRT wrote: Очень странно взаимодействует с выпадающими списками в диалогах
Возможно связано с недавними изменениями, в данном случае скорее всего стоит запретить работу скрипта в комбобоксах.
HaRT wrote: стандартный скрипт 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 у нас не бывает никогда, извините.

siberia-man
Posts: 98
Joined: Sat 28 Jun, 2014 23:07
Has thanked: 1 time
Been thanked: 3 times

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

Post by siberia-man » Tue 27 Aug, 2019 15:35

Встретился баг. Куда писать? Наверно это сюда.

Windows 7 Enterprise SP1
Far3.0.5454 x86
Стандартный плагин поиска
Стандартный FarColorer
Макрос из первого сообщения

Как воспроизвести
  1. Поиск по Alt-F7
  2. Открыть любой файл в редакторе
  3. Команды плагинов
  4. FarColorer
  5. Список типов
  6. Нажать грячую клавишу (ВАЖНО: одна горячая клавиша должна быть назначена для нескольких пунктов меню выбора синтаксиса)
Так получается, если выполнить всю последовательность, не переключаясь на другие окна


Так получается, если выполнить всю последовательность, переключится на другое окно и вернуться в ФАР между пунктами 5 и 6
Last edited by siberia-man on Tue 27 Aug, 2019 15:37, edited 1 time in total.

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

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

Post by John Doe » Thu 29 Aug, 2019 14:32

Подтверждаю баг в фаре.
Минимальный пример для воспроизведения:
1. Открыть на редактирование файл из результатов поиска
2. Открыть меню плагинов F11 (например).
3. Запустить макрос

Code: Select all

local F = far.Flags
local ID = 1;
Macro { description="test"; --https://forum.farmanager.com/viewtopic.php?p=154842#p154842
  area="Menu"; key="F1";
  action=function()
    local hDlg = far.AdvControl(F.ACTL_GETWINDOWINFO).Id;
    hDlg:send(F.DM_SHOWDIALOG,0)
    local list = far.GetDlgItem(hDlg,ID)[6] --[6]  Selected/ListItems: integer/table
    local item
    for i=#list,3,-1 do
      item = list[i]
      hDlg:send(F.DM_LISTUPDATE,ID,{Index=i,Text=item.Text,Flags=bor(item.Flags,F.LIF_HIDDEN)})
    end
    hDlg:send(F.DM_SHOWDIALOG,1)
    Menu.Filter(4)
  end;
}
Если закомментировать вызовы DM_SHOWDIALOG, то будет ещё красивее.
А если убрать Menu.Filter(4), то перестаёт проявляться.

siberia-man
Posts: 98
Joined: Sat 28 Jun, 2014 23:07
Has thanked: 1 time
Been thanked: 3 times

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

Post by siberia-man » Sun 01 Sep, 2019 07:49

John Doe wrote:
Thu 29 Aug, 2019 14:32
Подтверждаю баг в фаре
Уточните, пожалуйста, баг в самом фаре или только в макросе?

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

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

Post by John Doe » Sun 01 Sep, 2019 09:05


Post Reply

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