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

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

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

Post by ccaid » Fri 20 Mar, 2015 13:36

В теме обсуждаются проблемы, вызванные изменениями в билдах 4316+4318, 4321, 4337+4340+4352
Фар делают добрые люди

Shmuel
Posts: 5747
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 22 times
Been thanked: 205 times

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

Post by Shmuel » Fri 20 Mar, 2015 13:55

ccaid wrote: между 4310 и 4319 сломалось. в диалогах плагинов не работает макрос (не пропускает ентер):
У меня в 4319 ваш макрос работает нормально.

ccaid
Posts: 846
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 17 times
Been thanked: 5 times

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

Post by ccaid » Fri 20 Mar, 2015 14:11

Shmuel wrote: У меня в 4319 ваш макрос работает нормально.
win7 x64 + far x86 + плагин morehistory + локальный конфиг + макрос
проблема воспроизводится
Фар делают добрые люди

Shmuel
Posts: 5747
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 22 times
Been thanked: 205 times

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

Post by Shmuel » Fri 20 Mar, 2015 14:43

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

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

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

Post by John Doe » Fri 20 Mar, 2015 14:45

Shmuel wrote: Если же плагин это не пропустит, то FarInputRecordToName() возвращает FALSE.
Если FARMACRO_KEY_EVENT останется, то правильнее всего (имхо) будет усовершенствовать FarInputRecordToName.

Shmuel
Posts: 5747
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 22 times
Been thanked: 205 times

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

Post by Shmuel » Sat 21 Mar, 2015 12:24

В 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: 5747
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 22 times
Been thanked: 205 times

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

Post by Shmuel » Sat 21 Mar, 2015 15:41

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: 5542
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 85 times
Contact:

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

Post by zg » Sat 21 Mar, 2015 15:52

нет. макролиб тут постольку-поскольку. это «фича» 13 летней выдержки. в ченжлоге есть пример без макролиба.

Shmuel
Posts: 5747
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 22 times
Been thanked: 205 times

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

Post by Shmuel » Sat 21 Mar, 2015 17:13

Что там было, мне до сих пор не понятно, но в 4323 неисправность больше не проявляется.

User avatar
zg
zero-gravity
Posts: 5542
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 85 times
Contact:

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

Post by zg » Sat 21 Mar, 2015 17:57

вызов InputRecordToName с параметрами, соответствующими alt-ins во время исполнения макроса вызывал граббер. это не какой-то баг, это было специально сделано. в тесте до редактора идёт вызов граббера. т.е. полная последовательность: "AltIns Esc ShiftF4 CtrlY Enter". при приходе altins оно отдавалось в макролиб, макролиб дёргал InputRecordToName, вызывался грабер, закрывался по следующей esc. управление получал макролиб, возвращал его фару, фар обрабатывал наконец altins и вызывал граббер. shiftf4 и ctrly съедались граббером, enter закрывал граббер. область в итоге: shell. что тут может быть непонятно?

Shmuel
Posts: 5747
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 22 times
Been thanked: 205 times

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

Post by Shmuel » Sat 21 Mar, 2015 18:56

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

Остаётся не совсем ясным, почему:
(1) баг не проявлялся до 4321 (хотя предположение было изложено в одном из постов выше)
(2) почему баг проявлялся нерегулярно

User avatar
zg
zero-gravity
Posts: 5542
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 85 times
Contact:

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

Post by zg » Sat 21 Mar, 2015 19:11

Shmuel wrote:Из объяснения следует, что макролиб здесь полноправный участник в проявлении бага.
макролиб участвует конкретно в этой ситуации воспроизведения. в принципе, чтобы увидеть баг, он не нужен. в ченжлоге есть пример, который работает на любой версии far+luamacro.
Shmuel wrote:(1) баг не проявлялся до 4321 (хотя предположение было изложено в одном из постов выше)
потому что до 4321 macrolib не вызывал InputRecordToName во время исполнения макроса.
Shmuel wrote:(2) почему баг проявлялся нерегулярно
потому что macrolib не всегда вызывает InputRecordToName.

Shmuel
Posts: 5747
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 22 times
Been thanked: 205 times

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

Post by Shmuel » Sat 21 Mar, 2015 19:19

zg wrote:
Shmuel wrote:(2) почему баг проявлялся нерегулярно
потому что macrolib не всегда вызывает InputRecordToName.
А вот это и непонятно.

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

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

Post by John Doe » Mon 23 Mar, 2015 08:54

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: 5747
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 22 times
Been thanked: 205 times

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

Post by Shmuel » Mon 23 Mar, 2015 09:17

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

ccaid
Posts: 846
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 17 times
Been thanked: 5 times

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

Post by ccaid » Thu 02 Apr, 2015 08:01

между 4310 и 4319 до плагина Review перестали доходить серые клавиши (Gray*, Gray-, Gray+)
Фар делают добрые люди

Post Reply

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