Последствия изменений обработки нажатий клавиш
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Глюки и баги, появившиеся в «ночных сборках»
win7 x64 + far x86 + плагин morehistory + локальный конфиг + макрос
проблема воспроизводится
Фар делают добрые люди
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Глюки и баги, появившиеся в «ночных сборках»
Ага, теперь повторил (с плагином LF History). Тут 2 проблемы;
1. EventType приходит как FARMACRO_KEY_EVENT, плагин эти события пропускает (игнорирует).
2. Если же плагин это не пропустит, то FarInputRecordToName() возвращает FALSE.
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Глюки и баги, появившиеся в «ночных сборках»
В 4321, по сравнению с 4319, возникла неисправность, имеющая неустойчивый характер, но стабильно воспроизводимая у меня при запуске макротеста сразу после запуска Фара.
1. Неисправность воспроизводится при наличии плагина MacroLib 1.25 с установленной опцией "Process hotkeys". Если опция снята, неисправность не воспроизводится.
2. Проверка показала, что макротест запускается плагином LuaMacro, а не MacroLib (как я предположил вначале), поскольку не вызывается функция mf.postmacro, которую использует MacroLib.
3. Сам тест не проходит из-за того, что после
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 } ║
╚══════════════════════════════════════════════════════════════════════════════════════════════════╝
2. Проверка показала, что макротест запускается плагином LuaMacro, а не MacroLib (как я предположил вначале), поскольку не вызывается функция mf.postmacro, которую использует MacroLib.
3. Сам тест не проходит из-за того, что после
Keys "ShiftF4 CtrlY Enter"
проверяется условиеArea.Current=="Editor"
, но в этот момент оказывается Area.Current=="Shell"
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Глюки и баги, появившиеся в «ночных сборках»
Возникло предположение:Shmuel wrote:3. Сам тест не проходит из-за того, что послеKeys "ShiftF4 CtrlY Enter"
проверяется условие
Area.Current=="Editor"
, но в этот момент оказываетсяArea.Current=="Shell"
MacroLib ранее игнорировал ключи с FARMACRO_KEY_EVENT, а теперь они стали KEY_EVENT, он их анализирует, что вносит задержку, которая вызывает нарушение теста (хотя точный механизм этого пока не ясен).
- zg
- zero-gravity
- Posts: 6038
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Глюки и баги, появившиеся в «ночных сборках»
нет. макролиб тут постольку-поскольку. это «фича» 13 летней выдержки. в ченжлоге есть пример без макролиба.
- zg
- zero-gravity
- Posts: 6038
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Глюки и баги, появившиеся в «ночных сборках»
вызов InputRecordToName с параметрами, соответствующими alt-ins во время исполнения макроса вызывал граббер. это не какой-то баг, это было специально сделано. в тесте до редактора идёт вызов граббера. т.е. полная последовательность: "AltIns Esc ShiftF4 CtrlY Enter". при приходе altins оно отдавалось в макролиб, макролиб дёргал InputRecordToName, вызывался грабер, закрывался по следующей esc. управление получал макролиб, возвращал его фару, фар обрабатывал наконец altins и вызывал граббер. shiftf4 и ctrly съедались граббером, enter закрывал граббер. область в итоге: shell. что тут может быть непонятно?
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Глюки и баги, появившиеся в «ночных сборках»
После объяснения может быть понятно.
Из объяснения следует, что макролиб здесь полноправный участник в проявлении бага.
Остаётся не совсем ясным, почему:
(1) баг не проявлялся до 4321 (хотя предположение было изложено в одном из постов выше)
(2) почему баг проявлялся нерегулярно
- zg
- zero-gravity
- Posts: 6038
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Глюки и баги, появившиеся в «ночных сборках»
макролиб участвует конкретно в этой ситуации воспроизведения. в принципе, чтобы увидеть баг, он не нужен. в ченжлоге есть пример, который работает на любой версии far+luamacro.Shmuel wrote:Из объяснения следует, что макролиб здесь полноправный участник в проявлении бага.
потому что до 4321 macrolib не вызывал InputRecordToName во время исполнения макроса.Shmuel wrote:(1) баг не проявлялся до 4321 (хотя предположение было изложено в одном из постов выше)
потому что macrolib не всегда вызывает InputRecordToName.Shmuel wrote:(2) почему баг проявлялся нерегулярно
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Глюки и баги, появившиеся в «ночных сборках»
А вот это и непонятно.zg wrote:потому что macrolib не всегда вызывает InputRecordToName.Shmuel wrote:(2) почему баг проявлялся нерегулярно
- John Doe
- Бюрократ
- Posts: 13867
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Глюки и баги, появившиеся в «ночных сборках»
В 4323 всё ещё имею проблемы от этого макроса. Это только у меня?
Update: проблема есть, но как выяснилось давняя
http://forum.farmanager.com/viewtopic.php?f=9&t=9436
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Глюки и баги, появившиеся в «ночных сборках»
Детально не исследовал, но в последнем LF History этот макрос не нарушает работу.