View Issue Details

IDProjectCategoryView StatusLast Update
0000881Far ManagerMacropublic2012-03-28 10:56
ReporterJohnDoe Assigned Tovskirdin  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Fixed in Version3.0 
Summary0000881: Неправильная работа $AKey
Descriptionhttp://forum.farmanager.com/viewtopic.php?p=44873#p44873
Steps To Reproduce1. необходимо минимальный набор плагинов
PlugMenu

2. необходимо минимальный набор макросов

[HKEY_CURRENT_USER\Software\Far2\KeyMacros\Dialog\Enter]
"Sequence"="$MMode 1 $AKey"
"DisableOutput"=dword:00000001

3. последовательность действий (как то, а) нажать это б) сделать то с) видим не то что надо...)
far.exe /p PlugMenu
F11 Enter

Видим что Enter проскочил в панели.
т.е. произойдёт запуск файла или смена директории
TagsNo tags attached.
Build2566

Activities

JohnDoe

2009-05-27 11:11

updater   bugnote:0003293

Last edited: 2009-05-27 11:43

Max Rusov Ср 27 май, 2009 11:14

Плагин PlugMenu по нажатию Enter постит макрос типа:

F11 $if(Menu.Select("ИмяПлагина") > 0) $MMode 1 Enter $else Esc $end

т.е. чтобы выполнить команду плагина зовется стандартный диалог F11.


Если я правильно понимаю ход вещей, то получается что изнутри одного макроса постится другой. Может при этом что-то ломается...

JohnDoe

2009-05-27 11:14

updater   bugnote:0003294

В Far 1.75 баг не проявляется

vskirdin

2009-05-27 12:20

administrator   bugnote:0003295

"ИмяПлагина" - это че?

JohnDoe

2009-05-27 12:48

updater   bugnote:0003296

Last edited: 2009-05-27 13:12

PlugMenu выдаёт список плагинов. Мы выбираем из списка какой-то плагин "ИмяПлагина", и жмём Enter. PlugMenu в ответ постит свой макрос.

И вот как-то между собой 2 макроса взаимодейтствуют странно.

vskirdin

2009-05-27 14:56

administrator   bugnote:0003297

чей-то недопонимаю...
в нормальном режиме что должно быть? что ожидается?
и точно одного этого плагина достаточно?

JohnDoe

2009-05-27 15:08

updater   bugnote:0003298

1) При нажатии Enter cрабатывает макрос из реестра- "$MMode 1 $AKey" и передаёт Enter дальше.
2) PlugMenu постит макрос для выбора плагина (в данном случае он выбирает сам себя)
F11 $if(Menu.Select("Plugin commands") > 0) $MMode 1 Enter $else Esc $end

В нормальном режиме Enter никак не может возникнуть в панелях.

JohnDoe

2009-05-27 15:19

updater   bugnote:0003299

>и точно одного этого плагина достаточно?
Точно


Уточню последовательность действий: не "F11 Enter", а "F11 Enter Enter"

"DisableOutput"=dword:00000001 - не влияет, можно убрать из условий

vskirdin

2009-05-27 15:48

administrator   bugnote:0003303

Так, я думаю опция "NoSendKeysToPlugins" спасет отцов...

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Common\F11]
"Sequence"="F11 m"
"Description"="Advanced Plugin Menu"
"DisableOutput"=dword:1
"NoSendKeysToPlugins"=dword:00000001

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Dialog\Enter]
"Sequence"="$MMode 1 $AKey"
"DisableOutput"=dword:00000001
"NoSendKeysToPlugins"=dword:00000001

vskirdin

2009-05-27 15:49

administrator   bugnote:0003304

почему так - объяснять долго,но пока это так

JohnDoe

2009-05-27 16:03

updater   bugnote:0003305

Last edited: 2009-05-27 16:16

Ага. Вот почему это не проявлялось в far 1.75...

Дело в том, что на Enter эта опция всё время у меня и стояла.
Только в far 1.75 она работает, а в far 2 - нет

JohnDoe

2009-05-27 16:19

updater   bugnote:0003306

В общем тикет надо переформулировать в "NoSendKeysToPlugins не работает в Far 2"

Кстати, нельзя ли разжевать подробнее тайный смысл этой опции?
Никогда её толком не понимал, и в хелпе нет никаких примеров.

vskirdin

2009-06-03 17:00

administrator   bugnote:0003486

в плане работы с NoSendKeysToPlugins разницы в сорцах между 1.7 и 2.0 нет.

JohnDoe

2009-06-03 21:35

updater   bugnote:0003489

>Так, я думаю опция "NoSendKeysToPlugins" спасет отцов...
Она спасает отцов только в 1.75. Без неё глючит, с ней - порядок

В 2.0 разницы нет - опция не влияет. Глючит.

Вывод: или в 2.0 опция не работает, или дело не в ней

vskirdin

2010-09-27 17:45

administrator   bugnote:0005835

в 1.7х фича паразитировала на функции OpenPlugin
в 2.х это "обесточили" (hint: CurPluginItem)

JohnDoe

2010-09-27 17:50

updater   bugnote:0005836

Last edited: 2010-09-27 17:52

CurPluginItem в Писании не упоминается, а исходники читать мы не научены...

vskirdin

2010-09-27 18:31

administrator   bugnote:0005837

это не для тебя :-)

vskirdin

2011-10-01 08:40

administrator   bugnote:0007800

трабла на месте? если да - поподробнее

JohnDoe

2011-10-03 14:54

updater   bugnote:0007820

Last edited: 2011-10-03 14:57

Трабла на месте, воспроизводится как в 2.x, так и в 3.x:

http://conemu-maximus5.googlecode.com/files/far3.2208bis.x86.x64.7z
http://conemu-maximus5.googlecode.com/files/Far3Wrap.1.20.(2204).7z
http://far-plugins.googlecode.com/files/UCharMap.v5.rar

Макрос на Enter: mmode(1,2) $AKey

Вызываем Unicode Charmap и жмём Enter.

В результате Enter "проваливается" в панель, т.е. помимо действия выполняемого плагином (вставка символа в комстроку) происходит и неожиданное действие в панели (запуск файла или переход в директорию).

P.S.
Не зависит от NoSendKeysToPlugins.

vskirdin

2011-10-04 07:07

administrator   bugnote:0007823

1. плагин от Far 2
2. двойку мы не обсуждаем
3. вопросы про врапер - не сюда, к автору плагина
4. вопросы про Far 3 bis - не сюда, к автору bis`а

Приведи корректный пример, без промежуточных звеньев.

JohnDoe

2011-10-04 09:11

updater   bugnote:0007825

99% что враппер и bis непричём, но в любом случае: тройки у меня нет, и плагинов под неё тоже.

Как появятся - проверю, да.

alexy

2011-12-23 11:09

administrator   bugnote:0008210

?

vskirdin

2011-12-31 08:41

administrator   bugnote:0008291

JohnDoe, тройка появилась. Закрываем?

JohnDoe

2012-01-02 09:57

updater   bugnote:0008303

Но проблемного плагина под тройку всё ещё нет.

vskirdin

2012-03-17 11:14

administrator   bugnote:0008780

Новости есть?

JohnDoe

2012-03-20 08:43

updater   bugnote:0008786

Всё по старому: Far 3.0 build 2556 x86, http://far-plugins.googlecode.com/files/PlugMenu.far3.1.17.rar

<?xml version="1.0" encoding="UTF-8" ?>
<farconfig version="3.0.2556">
        <keymacros>
            <macro area="Dialog" key="Enter" flags="DisableOutput|NoSendKeysToPlugins">
                <text>mmode(1,2) $AKey</text>
            </macro>
        </keymacros>
    </macros>
</farconfig>

 far.exe /pPlugMenu
 Становимся на папку, жмём F11 Enter

Enter Enter Enter Enter
В процессе наблюдаем на панели смену папок.

Без макроса этого не происходит!

vskirdin

2012-03-20 10:34

administrator   bugnote:0008789

> Становимся на папку, жмём F11 Enter
получаю пустое меню "Plugin commands (0)"
что не так?

JohnDoe

2012-03-20 11:39

updater   bugnote:0008790

Last edited: 2012-03-20 11:40

Всё так.
А теперь ещё Enter Enter Enter Enter [...]
И процессе внимание НА ПАНЕЛИ.

vskirdin

2012-03-20 12:26

administrator   bugnote:0008792

либо лыжи, либо...
ты макрос для диалога привел? и где в "Plugin commands (0)" диалог?

vskirdin

2012-03-20 12:32

administrator   bugnote:0008793

Впрочем пофигу - не вижу проблемы

JohnDoe

2012-03-21 09:33

updater  

sshoot_000.fss (47,530 bytes)

JohnDoe

2012-03-21 09:42

updater   bugnote:0008798

Last edited: 2012-03-21 09:45

"Plugin commands (0)" это диалог.
Только почему "(0)"? Должно быть как минимум 1.

Приаттачил мультик.

На мультике я выбираю пункт "Plugin commands", и далее жму только Enter.

vskirdin

2012-03-22 06:30

administrator   bugnote:0008800

> Только почему "(0)"? Должно быть как минимум 1
покажи как сделать, чтобы был "1".
FAR запускал только с PlugMenu.far3.1.17.rar

JohnDoe

2012-03-22 09:46

updater  

Image 1.png (1,293 bytes)   
Image 1.png (1,293 bytes)   

JohnDoe

2012-03-22 09:46

updater  

Image 2.png (1,217 bytes)   
Image 2.png (1,217 bytes)   

JohnDoe

2012-03-22 09:51

updater   bugnote:0008803

Last edited: 2012-03-22 09:53

Я ничего не делаю. Просто запускаю чистый фар с единственным макросом и единственным плагином.
Приаттачил 2 скриншота.

после нажатия F11 - Image 1 (меню плагинов с единственным плагином)
после нажатия Enter - Image 2 (диалог плагина, со списком, и сам плагин в этом списке)

Все дальнейшие нажатия Enter вызывают странный побочный эффект - Enter "проваливается" в панели (см. мультик)

vskirdin

2012-03-22 10:35

administrator   bugnote:0008805

убил нах весь профиль
импортнул твой макрос
Far 2560/2561/2562/2563
добавил плагин из указанной ссылки
запустил весь этот комбайн
получил "Plugin commands (0)"

мульт не смотрел, ибо... "Не верю" (c) :-)

JohnDoe

2012-03-22 11:37

updater   bugnote:0008806

Это странно, потому что у меня всё-таки (1)
Но может не это важно: макрос-то точно импортировался без ошибок?
Потому что выше в тексте я пропустил таг <macros>, и при импорте должно было ругаться: XML Error (8,6): Error reading end tag.

JohnDoe

2012-03-22 11:38

updater  

DialogEnter.xml (326 bytes)   
<?xml version="1.0" encoding="UTF-8" ?>
 <farconfig version="3.0.2556">
     <macros>
         <keymacros>
             <macro area="Dialog" key="Enter" flags="DisableOutput|NoSendKeysToPlugins">
                 <text>mmode(1,2) $AKey</text>
             </macro>
         </keymacros>
     </macros>
 </farconfig>
DialogEnter.xml (326 bytes)   

vskirdin

2012-03-22 13:17

administrator   bugnote:0008807

> Потому что выше в тексте я пропустил таг <macros>,
это такая тонкая издевка, да? :-)

JohnDoe

2012-03-22 13:52

updater   bugnote:0008808

Честно говоря у меня похожее ощущение.
Скриншоты, мультики, а всё бестолку.

Между тем как багу уже много лет, и у других он прекрасно повторяется (см. форум)

vskirdin

2012-03-22 14:20

administrator   bugnote:0008809

Я просил что? Как повторить.
Ок. Ты мне дал макрос (занес его руками, так что отсутствие <macros> мне по барабану) и плагин, показал что ждать.
Все как бы ништяк, но мы уперлись в некую траблу, которая мне не позволяет повторить баг. Пока он у меня не повторится, я нихрена ничего сделать не смогу (потому и говорю, что твои мультики+скрины все в пустую, для меня по крайней мере, сейчас).
Выход в принципе есть - показывай какой-нить другой вариант повторения.

max rusov

2012-03-22 15:06

reporter  

FarTest.7z (914,911 bytes)

max rusov

2012-03-22 15:10

reporter   bugnote:0008810

Приложил тестовый набор, на котором проявляется ошибка.
Распаковать, запустить Far, встать на любой каталог, F11, Enter
Макрос бибикнет, откроется текущий плагин, а в панели произойдет вход в каталог.
Последнее - проблема, про которую пишет JohnDoe (не уверен, что ошибка)

Макрос такой:

farmacro area="Dialog" key="Enter"
{{
  Beep(0x40)
  $AKey
}}

JohnDoe

2012-03-22 16:02

updater   bugnote:0008811

Last edited: 2012-03-22 16:06

>> Только почему "(0)"? Должно быть как минимум 1
> покажи как сделать, чтобы был "1".
Диалог при пустой? Как на приаттаченом image 3?

Ctrl-H?

JohnDoe

2012-03-22 16:05

updater  

Image 3.png (1,121 bytes)   
Image 3.png (1,121 bytes)   

vskirdin

2012-03-23 06:43

administrator   bugnote:0008814

Ctrl-H тут не причем.
Собственно повторил, только...
...что-то не понял, как 0000466 (а точнее опция компиляции MANTIS_0000466) влияет на "(0)" и "(1)"... ну да не суть (не здесь).
Ок. Теперь идем дальше.
...Как бы "нечестный" эксперимент.
Вот смотрю в лог и вижу, что плагин фару послал макрос:
"F11 $if(Menu.Select("Plugin commands", 2) > 0) Enter $else Esc $end"
Вместе с $AKey получаем двойной Enter... Один из них как раз в и проваливается в панели...

Если все еще считается багом, то давайте "честный" плагин :-)

max rusov

2012-03-23 07:15

reporter   bugnote:0008815

Не совсем так. По логике, $AKey - запускает последовательность действий, которая приводит к Post'у второго макроса, так что этот Enter он уже "выбран". Формально кажется, что при установленном на Enter макросе, типа приведенного выше, Far должен работать так, будто макроса нет, а получается - не совсем...

vskirdin

2012-03-23 08:17

administrator   bugnote:0008816

PlugMenu.far3.1.17.rar что-то перехватывает?
Это к тому, что я нажал Enter. Макрос еще не запустился (только проинициализировалась машина), плагин запостил макрос. Далее запускается макрос Enter=$AKey (т.к. он первый в очереди), но текущее окружение (текущий фрейм) уже панели, а не диалог. В итоге $AKey передается в панели. Панели меняют каталог как и положено, потом приходит очередь второго макроса (который постил плагин)...
Кого будет к стенке ставить?

vskirdin

2012-03-23 08:47

administrator   bugnote:0008817

так, хрень какая-то. к стенке судя по всему ставить ФАР.
если $AKey непоследний, то все ок...
т.е.
1) mmode(1,2) $AKey - бага
2) mmode(1,2) $AKey %a=1; - нет баги
пошёл рыть...

vskirdin

2012-03-23 09:34

administrator   bugnote:0008818

Срань то какая...
Делаем так:
1. macro.cpp
2. в конце обоих функций KeyMacro::PostNewMacro вместо "==" делаем ">", т.е.
   if (Work.ExecLIBPos > Work.MacroWORK[0].BufferSize)

Кто не "в танке" :-) юзают готовый тест - http://skirda-file.googlecode.com/files/m881.n1.7z

JohnDoe

2012-03-23 12:13

updater   bugnote:0008819

Ушла проблема, спасибо.

vskirdin

2012-03-23 13:12

administrator   bugnote:0008821

build 2566

Issue History

Date Modified Username Field Change
2009-05-27 11:09 JohnDoe New Issue
2009-05-27 11:11 JohnDoe Note Added: 0003293
2009-05-27 11:13 JohnDoe Note Edited: 0003293
2009-05-27 11:14 JohnDoe Note Added: 0003294
2009-05-27 11:43 JohnDoe Note Edited: 0003293
2009-05-27 12:20 vskirdin Note Added: 0003295
2009-05-27 12:21 vskirdin Status new => assigned
2009-05-27 12:21 vskirdin Assigned To => vskirdin
2009-05-27 12:48 JohnDoe Note Added: 0003296
2009-05-27 13:12 JohnDoe Note Edited: 0003296
2009-05-27 14:56 vskirdin Note Added: 0003297
2009-05-27 15:08 JohnDoe Note Added: 0003298
2009-05-27 15:19 JohnDoe Note Added: 0003299
2009-05-27 15:48 vskirdin Note Added: 0003303
2009-05-27 15:48 vskirdin Status assigned => feedback
2009-05-27 15:49 vskirdin Note Added: 0003304
2009-05-27 16:03 JohnDoe Note Added: 0003305
2009-05-27 16:16 JohnDoe Note Edited: 0003305
2009-05-27 16:19 JohnDoe Note Added: 0003306
2009-06-03 16:27 JohnDoe Status feedback => resolved
2009-06-03 16:27 JohnDoe Resolution open => reopened
2009-06-03 16:29 JohnDoe Status resolved => assigned
2009-06-03 17:00 vskirdin Note Added: 0003486
2009-06-03 21:35 JohnDoe Note Added: 0003489
2010-09-27 17:45 vskirdin Note Added: 0005835
2010-09-27 17:50 JohnDoe Note Added: 0005836
2010-09-27 17:52 JohnDoe Note Edited: 0005836
2010-09-27 18:31 vskirdin Note Added: 0005837
2011-10-01 08:40 vskirdin Note Added: 0007800
2011-10-03 14:54 JohnDoe Note Added: 0007820
2011-10-03 14:57 JohnDoe Note Edited: 0007820
2011-10-04 07:07 vskirdin Note Added: 0007823
2011-10-04 09:11 JohnDoe Note Added: 0007825
2011-12-23 11:09 alexy Note Added: 0008210
2011-12-31 08:41 vskirdin Note Added: 0008291
2011-12-31 08:41 vskirdin Status assigned => feedback
2012-01-02 09:57 JohnDoe Note Added: 0008303
2012-01-02 09:57 JohnDoe Status feedback => assigned
2012-03-17 11:14 vskirdin Note Added: 0008780
2012-03-17 11:14 vskirdin Status assigned => feedback
2012-03-20 08:43 JohnDoe Note Added: 0008786
2012-03-20 08:43 JohnDoe Status feedback => assigned
2012-03-20 10:34 vskirdin Note Added: 0008789
2012-03-20 11:39 JohnDoe Note Added: 0008790
2012-03-20 11:40 JohnDoe Note Edited: 0008790
2012-03-20 12:26 vskirdin Note Added: 0008792
2012-03-20 12:32 vskirdin Note Added: 0008793
2012-03-21 09:33 JohnDoe File Added: sshoot_000.fss
2012-03-21 09:42 JohnDoe Note Added: 0008798
2012-03-21 09:45 JohnDoe Note Edited: 0008798
2012-03-21 09:45 JohnDoe Note Edited: 0008798
2012-03-22 06:30 vskirdin Note Added: 0008800
2012-03-22 09:46 JohnDoe File Added: Image 1.png
2012-03-22 09:46 JohnDoe File Added: Image 2.png
2012-03-22 09:51 JohnDoe Note Added: 0008803
2012-03-22 09:53 JohnDoe Note Edited: 0008803
2012-03-22 10:35 vskirdin Note Added: 0008805
2012-03-22 11:37 JohnDoe Note Added: 0008806
2012-03-22 11:38 JohnDoe File Added: DialogEnter.xml
2012-03-22 13:17 vskirdin Note Added: 0008807
2012-03-22 13:52 JohnDoe Note Added: 0008808
2012-03-22 14:20 vskirdin Note Added: 0008809
2012-03-22 15:06 max rusov File Added: FarTest.7z
2012-03-22 15:10 max rusov Note Added: 0008810
2012-03-22 16:02 JohnDoe Note Added: 0008811
2012-03-22 16:05 JohnDoe File Added: Image 3.png
2012-03-22 16:06 JohnDoe Note Edited: 0008811
2012-03-23 06:43 vskirdin Note Added: 0008814
2012-03-23 07:15 max rusov Note Added: 0008815
2012-03-23 08:17 vskirdin Note Added: 0008816
2012-03-23 08:47 vskirdin Note Added: 0008817
2012-03-23 09:34 vskirdin Note Added: 0008818
2012-03-23 12:13 JohnDoe Note Added: 0008819
2012-03-23 13:12 vskirdin Note Added: 0008821
2012-03-23 13:12 vskirdin Status assigned => feedback
2012-03-27 12:22 JohnDoe Status feedback => resolved
2012-03-28 10:56 vskirdin Build => 2566
2012-03-28 10:56 vskirdin Status resolved => closed
2012-03-28 10:56 vskirdin Resolution reopened => fixed
2012-03-28 10:56 vskirdin Fixed in Version => 3.0