Запутанное поведение ShiftF2 в пользовательском меню

Здесь можно сообщить о найденных багах в Far.
Post Reply
S.A.
Posts: 61
Joined: Mon 17 Nov, 2014 19:52
Been thanked: 7 times

Запутанное поведение ShiftF2 в пользовательском меню

Post by S.A. »

viewtopic.php?t=10367

На данный момент поведение стало несколько запутанным (или просто несколько более запутанным, чем до этого).

Если в текущем каталоге нет локального меню, а уровнем выше есть локальное меню, то ShiftF2 переключает на него, BS не действует.

Если в текущем каталоге есть локальное меню, и уровнем выше есть локальное меню, то BS переключает на меню выше, а ShiftF2 -- на главное меню.

Дальше -- интереснее.

Code: Select all

\---test1
    |   FarMenu.ini
    |
    \---test2
        \---test3
            \---test4
                \---test5
в test5 жмем F2, ShiftF2, BS -- главное меню, test1\farmenu.ini, главное меню

Code: Select all

\---test1
    |   FarMenu.ini
    |
    \---test2
        \---test3
            |   FarMenu.ini
            |
            \---test4
                \---test5
                        FarMenu.ini
в test5 жмем F2, BS, ShiftF2, BS, BS, BS -- test5\farmenu.ini, главное меню, test5\farmenu.ini, test3\farmenu.ini, test1\farmenu.ini, главное меню

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

Судя по треду, у многих разные представления о требуемом поведении ShiftF2, при этом файл помощи эксплицирует только переключение между местным и главным меню.
 ! Message from: John Doe
Форматирование важно!
Last edited by John Doe on Mon 24 Jun, 2019 12:59, edited 1 time in total.
Reason: Исправлено форматирование кода
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Запутанное поведение ShiftF2 в пользовательском меню

Post by Smitis »

S.A. wrote: Mon 24 Jun, 2019 12:28 Наткнулся из-за того, что подсовываю в макросы F2 ShiftF2, как раз чтобы избежать возможного вызова локального меню
Для макросов есть mf.usermenu. Например
  1. Macro { -- Всегда главное меню
  2.  
  3.     description="UserMenu: Main";
  4.  
  5.     area="Shell Search QView Info Tree";
  6.  
  7.     key="F2";
  8.  
  9.     action=function()
  10.  
  11.         if Area.Search then Keys "Esc" end
  12.  
  13.         mf.usermenu(1)
  14.  
  15.         Keys "Enter"
  16.  
  17.     end;
  18.  
  19. }
Last edited by Smitis on Mon 24 Jun, 2019 18:27, edited 1 time in total.
Разум когда-нибудь победит.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Запутанное поведение ShiftF2 в пользовательском меню

Post by DrKnS »

Пытаясь воспроизвести ваши test1\test2\test3\test4\test5, заметил следующее:
  • если farmenu.ini есть в %FARHOME% (a.k.a. Main Menu(Global)), а farmenu.ini в папке с профилем (a.k.a. Main Menu(User)) нет, то по умолчанию открвается Global, а по ShiftF2 в нём открывается пустое User
  • если же ситуация обратная - User есть, а Global нет - то открывается User и по ShiftF2 ничего не происходит.
Это тоже баг или так и должно быть?
S.A.
Posts: 61
Joined: Mon 17 Nov, 2014 19:52
Been thanked: 7 times

Запутанное поведение ShiftF2 в пользовательском меню

Post by S.A. »

Если руководствоваться правилами приоритета, описанными в русском файле помощи, то, на мой взгляд, так и было задумано (local->global->user); при этом в английском упомянут только приоритет global->user.

Вот то, что ShiftF2 обзавелся способностью искать локальные меню в родительских папках, причем с такой изобретательностью, а BS -- дублировать функию ShiftF2 при определенных условиях, кажется более странным.

Опять же, повторюсь, что судя по треду, у многих должно быть уже сформировались какие-то свои представления о том, что есть баг и как должно быть.

И да, у меня не было главного меню в %FARHOME%, было только пользовательское; если создаю, то во втором примере будет F2, BS, ShiftF2, ShiftF2, BS, BS, BS; ну и в первом -- F2, ShiftF2, ShiftF2, BS.
Last edited by S.A. on Mon 24 Jun, 2019 21:40, edited 1 time in total.
S.A.
Posts: 61
Joined: Mon 17 Nov, 2014 19:52
Been thanked: 7 times

Запутанное поведение ShiftF2 в пользовательском меню

Post by S.A. »

О, нашел билд 3798:

ShiftF2 прокручивает local->global->user (пустой user), если есть global;
local->user (пустой user), если нет global;

BS прокручивает:
local->parent->global, если нет user;
local->parent->user (пустой user), если нет global;
local->parent->global (даже если есть user)

parent'ы прокручиваются сколько угодно, но только если каждый предыдущий лежит ровно на один уровень выше, без безумных прыжков

Голосую за то, что это и есть (было) нормальное поведение, правда, казалось бы, чего уж тогда BS игнорирует существующий user и не докручивает до него.

UPD:
Выдаю желаемое за действительное -- в 3798 удалось тоже удалось воспроизвести поведение с прыжками по меню через каталоги:

Первый пример -- все так же.

Второй:

нет global/нет user

в test5:
F2 BS ShiftF2 -- переход в режим прыжков через папки™: в этом режиме BS прокручивает, а когда упрется, то ShiftF2 возвращает к началу, и снова можно прокручивать через папки.

есть global/есть или нет user

в test5:
F2 BS ShiftF2 Shift2 -- переход в режим прыжков через папки™: в этом режиме BS прокручивает, а когда упрется, то ShiftF2 ShiftF2 возвращает к началу, и снова можно прокручивать через папки.

нет global/есть user

в test5:
F2 BS ShiftF2 ShiftF2 ShiftF2 -- переход в режим прыжков через папки™: в этом режиме BS прокручивает, а когда упрется, то ShiftF2 ShiftF2 ShiftF2 возвращает к началу, и снова можно прокручивать через папки.

В общем, я сдаюсь со своими предположениями.

UPDv2:
5417 и 3798 вообще работают одинаково, прошу прощения за сумасшествие.

Еще дополнение к первому примеру в текущей версии:

global есть, user есть

ShiftF2 прокручивает global->user->test1/farmenu.ini

global есть, user нет

ShiftF2 прокручивает global->пустой user->test1/farmenu.ini

global нет, user есть

ShiftF2 прокручивает user->test1/farmenu.ini
Last edited by S.A. on Tue 25 Jun, 2019 17:10, edited 4 times in total.
Post Reply

Return to “Глюки и баги”