Изменение в работе макросов примерно после сборки 5350

Здесь можно сообщить о найденных багах в Far.
Post Reply
User avatar
buniak_a_h
Posts: 4266
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Изменение в работе макросов примерно после сборки 5350

Post by buniak_a_h »

Что-то изменилось в функции editor.Select() - она теперь вылетает без второго параметра. К сожалению, не могу точно указать номер версии, с которой сломался вызов. Если очень надо - могу поискать, но авторы, наверно, и так знают, что менялось. Точно в старой 5193 ещё работал; в 5352 - уже нет. Велет описан, в частности, в viewtopic.php?p=152598#p152598. Некоторые мои скрипты тоже сломались.
Напомню. Вызов без 2-го параметра приводил к гашению выделения.
В changelog-е я об этом ничего не нашёл. Как-то неожиданно... :mad:
Last edited by buniak_a_h on Thu 17 Jan, 2019 09:26, edited 3 times in total.
Shtirla
Posts: 117
Joined: Wed 04 Mar, 2009 20:09
Has thanked: 10 times
Been thanked: 2 times

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

Post by Shtirla »

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

Code: Select all

Macros\scripts\LuaManager.lua:227: bad argument #3 to 'Get' (invalid flag)   
вызов функции выглядит вот так

Code: Select all

local function Load1(n,d) return not defaults and obj:Get(key or -1,n,({string=F.FST_STRING,number=F.FST_QWORD})[type(d)]) or d end
второй пример с той же функцией

Code: Select all

FastFind Enhanced\FastFind Enhanced.dll:
FastFind Enhanced\ffind.lua:420: bad argument #3 to 'Get' (invalid flag)
на версии 5350 вроде (какая вчера была в стабильных?) не наблюдалось.



пошел искать рабочую версию...

upd: про пути удалил, косяка нет
Last edited by Shtirla on Thu 17 Jan, 2019 14:13, edited 1 time in total.
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

По поводу изменившегося поведения макросов.

1. Смотрите запись в LuaMacro\changelog, build 679, пункт 4, а также мантис #3663.

2. В двух словах: все до сих пор репорты о поломанных макросах, это на самом деле изначально неправильные макросы, передававшие nil вместо аргументов-флагов, не обозначенных в документации как опциональные аргументы. До поры до времени это работало, а теперь, будьте добры, приведите свой код в соответствие с документацией.

3. Насчёт Fast Find Enhanced - строка 420 в ffind.lua не содержит функции Get - у вас наверное какая-то древняя версия. Возьмите версию 1.0.0.5 и сделайте в ней правку, указанную в последних сообщениях темы плагина.
User avatar
buniak_a_h
Posts: 4266
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

Shmuel wrote: Thu 17 Jan, 2019 14:22 1. Смотрите запись в LuaMacro\changelog, build 679, пункт 4, а также мантис #3663.

2. В двух словах: все до сих пор репорты о поломанных макросах, это на самом деле изначально неправильные макросы, передававшие nil вместо аргументов-флагов, не обозначенных в документации как опциональные аргументы. До поры до времени это работало, а теперь, будьте добры, приведите свой код в соответствие с документацией.
Запись в changelog-е:
возможность опустить параметры-флаги может быть нежелательна.
Ну... может быть нежелательна - это не значит, что надо ломать то, что работало. :-( Менее трудоёмко и травматично для конечного пользователя было бы изменить документацию, указав, что этот параметр - опциональный... Ладно - мои скрипты, легко найти. А многие взяты с форума. И теперь напряг: когда стрельнёт и сколько данных потеряю?...
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

Не передёргивайте. Запись в чейнжлоге: #M3663: возможность опустить параметры-флаги может быть нежелательна. это общепринятое для чейнжлогов цитирование заголовка тикета на мантисе (автор фразы = автор тикета).

Никто ничего не ломал. Полагаться на недокументированное поведение - это быть самим себе злобным буратино.
User avatar
buniak_a_h
Posts: 4266
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

Не хочется вступать в дискуссию, но агрессивность ответа вынуждает...
Shmuel wrote: Thu 17 Jan, 2019 15:28 Не передёргивайте. Запись в чейнжлоге: #M3663: возможность опустить параметры-флаги может быть нежелательна. это общепринятое для чейнжлогов цитирование заголовка тикета на мантисе (автор фразы = автор тикета).
1. Я ничего не передёргивал. Вы сослались на этот пункт; я его просто процитировал, чтоб удобнее было (чтоб не лазать в текстовый файл).
2. «Общепринятое» - я не в курсе. С мантисом только тут сталкивался. Обычно если цитирование, то в кавычках; там их нет
3. На самом деле если Вы вносите изменения, которые могут повлиять на работу ФАРа, то (а) надо писать конкретно, в чём заключаются изменения и (б) писать это в общем changelog-е ФАРа. Я не знаю структуры модулей проекта; для меня как для конечного пользователя исполнением макроса "заведует" Far file manager. А что он на самом деле делает это посредством вызова плагина - это технические подробности, ненужные пользователю. Тем более, что этот плагин входит к комплект поставки.
Shmuel wrote: Thu 17 Jan, 2019 15:28 Никто ничего не ломал. Полагаться на недокументированное поведение - это быть самим себе злобным буратино.
Повторюсь. Перестали работать те скрипты, которые я брал с форума. Ну, мне-то исправить - легко. Но ведь есть люди, которые ничего про лаги не знают.
Если Вы убрали "четную" ошибку, в результате чего что-то перестало работать - это и называется "сломали". Я же не спорю, что была ошибка.
Пример на мантисе, конечно, эффектный, но:
функция editor.Select: второй параметр - либо таблица, либо 5 параметров. Таблица может быть пустой, и от этого ваше изменение не спасёт. Тут, скорее, надо было сделать так: если параметр - флаг, то он - обязательный. Если параметр может быть таблицей, то вызов без флага должен приравниваться к вызову с пустой таблицей.
User avatar
buniak_a_h
Posts: 4266
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

Shmuel, кстати вдогонку.
Опять же конкретно о функции editor.Select. С пустой таблицей в качестве второго параметра она отрабатывает как раньше. Нелогично... Должна вылетать, т.к. элемент BlockType: flags не указан...
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

Данный тикет #3663 на мантисе преследует определённую цель - исключить ряд ошибок в макросах, когда забывают передать параметр или передают неинициализированную переменную, или (что то же самое) переменную с ошибкой в наборе имени.

Эту задачу нельзя решить, сохранив прежнее поведение. И, поскольку прежнее поведение было признано нежелательным и потенциально опасным, от него избавились. Поскольку прежнее поведение являлось не правилом, а просто недокументированной особенностью реализации, от него избавились без малейшего сожаления.

Дальнейших ответов здесь на эту тему от меня не будет.
Shtirla
Posts: 117
Joined: Wed 04 Mar, 2009 20:09
Has thanked: 10 times
Been thanked: 2 times

Изменение в работе макросов примерно после сборки 5350

Post by Shtirla »

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

ну да ладно, вроде победил проблему, вопрос, как определить где она еще может остаться? Пересматривать все макросы нереально....
может есть предложения?
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Изменение в работе макросов примерно после сборки 5350

Post by John Doe »

Shtirla wrote: Fri 18 Jan, 2019 10:16 да и в стабильные сборки фар с такими изменениями (пусть и в дочернем плагине) как то рано записывать
А в какой момент станет не "рано", а "пора"?
Shtirla wrote: Fri 18 Jan, 2019 10:16 как определить где она еще может остаться?
По красным окошкам с текстом ошибки и содержимым стека.
Shtirla
Posts: 117
Joined: Wed 04 Mar, 2009 20:09
Has thanked: 10 times
Been thanked: 2 times

Изменение в работе макросов примерно после сборки 5350

Post by Shtirla »

Ну хотя бы когда те авторы макросов, которые здесь перестали бы удивляться и скрипты в общем доступе порпавили/ проверили.

хотя с учетом активности форума. не имеет значения. просто не хотелось бы тех немногих пользователей фара терять изза каких то там красных окошек.
User avatar
buniak_a_h
Posts: 4266
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Изменение в работе макросов примерно после сборки 5350

Post by buniak_a_h »

Shtirla wrote: Fri 18 Jan, 2019 10:16 ну да ладно, вроде победил проблему, вопрос, как определить где она еще может остаться? Пересматривать все макросы нереально....
может есть предложения?
Есть идея. Подозреваю, что трудоёмкая и будет отвергнута...
Придумать механизм описания интерфейса вызова функций, регистрации этих описаний и в макросе синтаксической проверки например, Luacheck FAR scripts от jd, а также в far.MacroCheck добавить проверку синтаксиса вызова зарегистрированных функций
Есть ещё мысль: если вызов функции предполагает две формы указания параметров: позиционный и ключевой (в таблице), то автоматически считать эти параметры опциональными, т.к. в таблице они могут быть опущены, и это не приведёт к "красному окошку"
Post Reply

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