far2l
far2l copied to clipboard
Various minor bugs
1) Переключение интерфейса far2l на Белорусский язык приводит к ошибке
с ошибкой в debug log
Init: count expected=2287 but actual=2286
При этом
grep -v "// need translation:" FarBel.lng | wc
grep -v "// need translation:" FarEng.lng | wc
grep -v "// need translation:" FarRus.lng | wc
выдают одинаковое кол-во значащих строк 4929.
Странный глюк именно с последним языком из перечисленных в farlang.templ.m4.
Возможно ошибка связана с последствиями замены m4 на perl в https://github.com/elfmz/far2l/pull/1770.
2) Редкое пропадание 1-й буквы вывода
Нормальное поведение:
~$ pandoca
Command 'pandoca' not found, did you mean:
command 'pandoc' from deb pandoc (2.9.2.1-3ubuntu2)
Try: sudo apt install <deb name>
Ненормальное (1-я буква вывода отсутствует):
~$ pandoca
ommand 'pandoca' not found, did you mean:
command 'pandoc' from deb pandoc (2.9.2.1-3ubuntu2)
Try: sudo apt install <deb name>
Ненормальное возникает редко 1 раз на 10-20 попыток и только сразу после запуска Фара.
примерно 50 раз запускал с pandoca - ни разу не воспроизвелось у меня (
Прикольная опечатка в farlang.templ.m4 оказалась. Как Вы её отловили? Грипнули строки не начинающиеся с // или " в FarBel.lng?
grep '^"' ././FarEng.lng > ./FarEng.lng.xx grep '^"' ././FarBel.lng > ./FarBel.lng.xx потом методом построчного тыка сравнивая .xx файлы нашел место расхождения
Посмотрел старые версии - эта опечатка там давно уже, как минимум с апреля этого года и никто не напарывался. Может добавить дебаг вывод в парсер языковых файлов *.lng на недопустимые строки?
Если уж мы коснулись сборочных скриптов. Вот тут человек жалуется что в нынешних скриптах Линукс захардкожен. На bsd мешает https://github.com/elfmz/far2l/commit/c2297eee0e1df1418254e1920b58dbd47eb203c7#r126260287
По 2) уточнение баг-репорта: 1-я буква на самом деле не пропадает, а выводится в предыдущей строке (где сама команда) на крайнем правом знакоместе экрана
а можно скриншот, чтоб точно было понятно что и где?
а можно скриншот, чтоб точно было понятно что и где?
Я у себя сейчас этого отловить не могу. Вот скриншот от @shmuz , который заморочился для поиска бага раскраской
Похоже проблема с первой буквой стабильно воспроизводится только на far2m. Пока закрываю. @shmuz с этим активно разбирается. Подождём результатов.
По поводу 2) см. в far2m: https://github.com/shmuz/far2m/issues/43
Проявляется в far2l-wx в зависимости от ширины окна far2l и/или font, например, замечен при ширине окна ровно 87 символов.
@elfmz @akruphi
примерно 50 раз запускал с pandoca - ни разу не воспроизвелось у меня (
Оно воспроизводится легко. Надо сделать ширину фара = 87 символов.
Оно воспроизводится в среднем 1 раз из 9, т.к. длина _exit_marker случайна в диапазоне 8..16.
Оно всегда воспроизводится, когда последний символ внутренней команды запуска точно на правом краю окна.
"Внутренняя команда" - это например
§ . /tmp/far2m_3e8_0/vtcmd/5976_1;printf '\033_far2l_%s\007' "E9S5Rxz1czcF:$FARVTRESULT"
Перезапускать фар каждый раз не надо. Сделать ширину окна 87, погасить панели, и примерно 1 раз из 9 будет воспроизводиться.
Я нашёл фикс, но не уверен, что он не поломает что-то другое. Хотелось бы услышать мнение автора.
diff --git a/far/src/vt/vtansi.cpp b/far/src/vt/vtansi.cpp
index c04aa1ac..f466b6e9 100644
--- a/far/src/vt/vtansi.cpp
+++ b/far/src/vt/vtansi.cpp
@@ -1061,7 +1061,7 @@ struct VTAnsiContext
if (es_argc == 0) es_argv[es_argc++] = 1; // ESC[C == ESC[1C
if (es_argc != 1) return;
Pos.X = Info.dwCursorPosition.X + es_argv[0];
- if (Pos.X > (Info.dwSize.X - 1)) Pos.X = (Info.dwSize.X - 1);
+ if (Pos.X >= (Info.dwSize.X - 1)) Pos.X = Info.dwSize.X;
Pos.Y = Info.dwCursorPosition.Y;
WINPORT(SetConsoleCursorPosition)( con_hnd, Pos );
return;
Переоткрываю, т.к. @shmuz даёт метод воспроизводства бага 2 и предлагает фикс.