Последствия изменений обработки нажатий клавиш

Здесь можно сообщить о найденных багах в Far.
Post Reply
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

Последствия изменений обработки нажатий клавиш

Post by ccaid »

В теме обсуждаются проблемы, вызванные изменениями в билдах 4316+4318, 4321, 4337+4340+4352
Фар делают добрые люди
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel »

ccaid wrote: между 4310 и 4319 сломалось. в диалогах плагинов не работает макрос (не пропускает ентер):
У меня в 4319 ваш макрос работает нормально.
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

Глюки и баги, появившиеся в «ночных сборках»

Post by ccaid »

Shmuel wrote: У меня в 4319 ваш макрос работает нормально.
win7 x64 + far x86 + плагин morehistory + локальный конфиг + макрос
проблема воспроизводится
Фар делают добрые люди
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel »

ccaid wrote: + плагин morehistory
Ага, теперь повторил (с плагином LF History). Тут 2 проблемы;
1. EventType приходит как FARMACRO_KEY_EVENT, плагин эти события пропускает (игнорирует).
2. Если же плагин это не пропустит, то FarInputRecordToName() возвращает FALSE.
User avatar
John Doe
Бюрократ
Posts: 13867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by John Doe »

Shmuel wrote: Если же плагин это не пропустит, то FarInputRecordToName() возвращает FALSE.
Если FARMACRO_KEY_EVENT останется, то правильнее всего (имхо) будет усовершенствовать FarInputRecordToName.
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel »

В 4321, по сравнению с 4319, возникла неисправность, имеющая неустойчивый характер, но стабильно воспроизводимая у меня при запуске макротеста сразу после запуска Фара.

Code: Select all

╔════════════════════════════════════════════ LuaMacro ════════════════════════════════════════════╗
║ ...ogram Files\Far3\Plugins\Standard\LuaMacro\macrotest.lua:39: assertion failed                 ║
║ stack traceback:                                                                                 ║
║    [C]: in function 'assert'                                                                     ║
║    ...ogram Files\Far3\Plugins\Standard\LuaMacro\macrotest.lua:39: in function 'TestArea'        ║
║    ...ogram Files\Far3\Plugins\Standard\LuaMacro\macrotest.lua:44: in function 'test_areas'      ║
║    ...ogram Files\Far3\Plugins\Standard\LuaMacro\macrotest.lua:1583: in function 'test_all'      ║
║    ...a\Far Manager\Profile\Macros\scripts\Shell\macrotest.lua:6: in function <...a\Far Manager\ ║
║ Profile\Macros\scripts\Shell\macrotest.lua:4>                                                    ║
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
║                                              { OK }                                              ║
╚══════════════════════════════════════════════════════════════════════════════════════════════════╝
1. Неисправность воспроизводится при наличии плагина MacroLib 1.25 с установленной опцией "Process hotkeys". Если опция снята, неисправность не воспроизводится.

2. Проверка показала, что макротест запускается плагином LuaMacro, а не MacroLib (как я предположил вначале), поскольку не вызывается функция mf.postmacro, которую использует MacroLib.

3. Сам тест не проходит из-за того, что после Keys "ShiftF4 CtrlY Enter" проверяется условие
Area.Current=="Editor", но в этот момент оказывается Area.Current=="Shell"
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel »

Shmuel wrote:3. Сам тест не проходит из-за того, что после Keys "ShiftF4 CtrlY Enter" проверяется условие
Area.Current=="Editor", но в этот момент оказывается Area.Current=="Shell"
Возникло предположение:
MacroLib ранее игнорировал ключи с FARMACRO_KEY_EVENT, а теперь они стали KEY_EVENT, он их анализирует, что вносит задержку, которая вызывает нарушение теста (хотя точный механизм этого пока не ясен).
User avatar
zg
zero-gravity
Posts: 6038
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by zg »

нет. макролиб тут постольку-поскольку. это «фича» 13 летней выдержки. в ченжлоге есть пример без макролиба.
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel »

Что там было, мне до сих пор не понятно, но в 4323 неисправность больше не проявляется.
User avatar
zg
zero-gravity
Posts: 6038
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by zg »

вызов InputRecordToName с параметрами, соответствующими alt-ins во время исполнения макроса вызывал граббер. это не какой-то баг, это было специально сделано. в тесте до редактора идёт вызов граббера. т.е. полная последовательность: "AltIns Esc ShiftF4 CtrlY Enter". при приходе altins оно отдавалось в макролиб, макролиб дёргал InputRecordToName, вызывался грабер, закрывался по следующей esc. управление получал макролиб, возвращал его фару, фар обрабатывал наконец altins и вызывал граббер. shiftf4 и ctrly съедались граббером, enter закрывал граббер. область в итоге: shell. что тут может быть непонятно?
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel »

zg wrote: что тут может быть непонятно?
После объяснения может быть понятно.
zg wrote: макролиб тут постольку-поскольку
Из объяснения следует, что макролиб здесь полноправный участник в проявлении бага.

Остаётся не совсем ясным, почему:
(1) баг не проявлялся до 4321 (хотя предположение было изложено в одном из постов выше)
(2) почему баг проявлялся нерегулярно
User avatar
zg
zero-gravity
Posts: 6038
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by zg »

Shmuel wrote:Из объяснения следует, что макролиб здесь полноправный участник в проявлении бага.
макролиб участвует конкретно в этой ситуации воспроизведения. в принципе, чтобы увидеть баг, он не нужен. в ченжлоге есть пример, который работает на любой версии far+luamacro.
Shmuel wrote:(1) баг не проявлялся до 4321 (хотя предположение было изложено в одном из постов выше)
потому что до 4321 macrolib не вызывал InputRecordToName во время исполнения макроса.
Shmuel wrote:(2) почему баг проявлялся нерегулярно
потому что macrolib не всегда вызывает InputRecordToName.
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel »

zg wrote:
Shmuel wrote:(2) почему баг проявлялся нерегулярно
потому что macrolib не всегда вызывает InputRecordToName.
А вот это и непонятно.
User avatar
John Doe
Бюрократ
Posts: 13867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by John Doe »

Shmuel wrote:
ccaid wrote: + плагин morehistory
Ага, теперь повторил (с плагином LF History). Тут 2 проблемы;
1. EventType приходит как FARMACRO_KEY_EVENT, плагин эти события пропускает (игнорирует).
2. Если же плагин это не пропустит, то FarInputRecordToName() возвращает FALSE.
В 4323 всё ещё имею проблемы от этого макроса. Это только у меня?

Update: проблема есть, но как выяснилось давняя
http://forum.farmanager.com/viewtopic.php?f=9&t=9436
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel »

John Doe wrote: В 4323 всё ещё имею проблемы от этого макроса. Это только у меня?
Детально не исследовал, но в последнем LF History этот макрос не нарушает работу.
Post Reply

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