far2l
far2l copied to clipboard
Пропадает курсор в редакторе (и командной строке)
Курсор в редакторе пропадает. Самый быстрый способ его вернуть - нажать F2.
При этом фар или нормально работает или входит в этот бескурсорный режим и уже не выходит из него. Флоу такой: редактируешь скрипт, запускаешь, опять в редактор, а курсора нет.
Заметил давно, проявляется на ppa и на head. Ubuntu, гуевый режим.
Часто так делаю, ни разу не замечал. А скрипт что делает? Удалось отчасти воспроизвести запустив такую команду echo $'\033[?25l'; sleep 30 и отправив ее в фон путем Ctrl+Alt+Z но при нажатии любой буквы - курсор сразу появляется
Возможно, это какой-то косяк самого wx?
Сталкивался один раз (на X11/ KDE Plasma). И в tg-чате этот баг тоже упоминался:
Konstantin Stolyarov:
Заметил такую проблему: ARM64, ubuntu, gnome, wayland, в GUI версии периодически перестает мигать или пропадает курсор в командной строке. Это как то можно вылечить?
Andrey Kuksov:
Это фича, засыпать при неактивности
Konstantin Stolyarov:
Проблема в том, что я начинаю вводить символы в командной строке, символы вводятся а курсор не появляется. И если нужно что то поправить в строке - то проблематично сместится в нужную позицию без курсора )
Фича есть, но оно именно при неактивности срабатывает - если ничего не печатать через 3 минуты курсор перестает мигать, оставаясь при этом отображенным, и сразу начинает мигать при любом нажатии/тычке мышкой.
Screencast from 07-14-2024 09:32:37 PM.webm Ничего такого скрипт не делает. В аттаче запись экрана. После запуска скрипта курсор пропадает.
Из телеграм-чата https://t.me/far2l_ru/24934 про пропадание курсора:
Во время обновления криво обновились драйверы Nvidia. В итоге загрузился без них 1024x768. И в этом состоянии несколько раз словил пропадание курсора в far2l GUI, про которое тут недавно писали. После установки драйверов Nvidia курсор перестал пропадать!
Ну если от дров зависит - то ой, far2l хардварное ускорение не юзает, он просто по таймеру вызывает _window->Refresh(...) - ключевая функция тут - ConsolePaintContext::BlinkCursor, а потом уже после этого refresh приходит (обычно:)) WinPortPanel::OnPaint который и отрисовывает что надо, потому для дебага на системе где воспроизводится можно втыкнуть принтф-ы в ConsolePaintContext::BlinkCursor с выводом координат которые передаются в RefreshArea, и еще один принт - в WinPortPanel::OnPaint - посмотреть приходит ли он после каждого ConsolePaintContext::BlinkCursor.
Посмотрел видео - явно это не косяк отрисовки, а гдето вызвался SetConsoleCursorInfo( с bVisible=FALSE
@DmitryYudin а вы можете сделать кое какие измнения, пересобрать с ними far2l и посмотреть повлияет ли оно на проблему? А именно вставить такую строчку:
CONSOLE_CURSOR_INFO cci; WINPORT(GetConsoleCursorInfo)(NULL, &cci); cci.bVisible = TRUE; WINPORT(SetConsoleCursorInfo)(NULL, &cci);
В код функции ~FarExecuteScope() находящейся в far2l/src/execute.cpp
Вставьте ее в самый конец и попробуйте, если проблема уйдет - просьба попробовать поднимать ее выше и выше по коду и найти конкретную строчку вставка после которой фиксит проблему, типа:
Попытка раз:
Если проблема исправлена - то ищем место выше после которого она перестает исправлятся:
..попытка два:
..попытка три:
Если окажется что проблема уходит вообще куда бы не воткнуть эту строку в ~~FarExecuteScope(), то попробуйте ее воткнуть в конец функции выше - FarExecuteScope(const char *cmd_str):
@DmitryYudin если есть возможность, попробуйте проверить то, что советует @elfmz.
Баг встречается у многих, но, похоже, только у вас воспроизводится стабильно.
а еще хотябы попробуйте текущий мастер - кое какой тонкий момент подправил
Загадочная история:
На зупущенном ppa-фаре (490b3728) проблема повторялась на раз-два (я его не закрывал с тех пор), из под него запустил локально собранный в /mnt/work/github/far2l-build/install/bin/ фар (64af5341). Увидел, что все повторяется. Запустил 64af5341 из терминала, в гуевом режиме (на всякий случай) - тоже повторяется. Закрыл все инстансы, запустил фар - ни в том ни в другом курсор не пропадает. Короче, буду наблюдать, как поймаю не стану закрывать, подебажу. Возможно, как-то влияет то (бред, конечно, но мало ли), что у меня почти всегда несколько инстансов far2l открыто. @elfmz
у меня почти всегда несколько инстансов far2l открыто
У меня тоже, однако такого эффекта не видел. Вот в этом комите https://github.com/elfmz/far2l/commit/c373b82ff07a9b6181e44a4308e22af17d4c556b - исправлен косяк небольшой. А именно - код, который запускает команды во встроенном терминале - он в конце исполнения возвращает изначальное состояние курсора, однако логический косяк был в том что это изначальное состояние запоминалось единожды - по сути при первом запуске комнады, причем он мог быть и не из командной строки, но и из плагина (типа мультиарк) и юзерменю.. Теоретически если при запуске самой первой команды за время жизни фара курсор был в состоянии не показывания, то при завершении всех последующих запусков - он должен был постоянно спрятываться. Я это исправил - сделал чтобы состояние курсора запоминалось перед каждым запуском команд, а не только самым первым. Но вот воспроизвести проблему, провоцируя запуски команд самыми разными способами, мне не удалось, но может вас это натолкнет на мысль - вдруг вы там чтото делали особенное с фаром сразу после его запуска...
Сегодня заметил, что проблема воспроизвелась, когда тяжелую сборку запустил на машине. Потом было не до этого и надо было ребутнуться, но в процессе я несколько раз проверил, что курсор пропадает. Может наведет на мысли какие)
какая версия far2l была?
FAR2L, version 2.6.1-2024-07-14-0c581fa-beta Linux x86_64
по возможности проапгрейдитесь до чегонить после https://github.com/elfmz/far2l/commit/c373b82ff07a9b6181e44a4308e22af17d4c556b и понаблюдайте
@DmitryYudin баг всё ещё проявляется?
С тех пор все ok. Спасибо большое!
Я без фара, как без рук. Есть ли способ вам задонатить?
С тех пор все ok. Спасибо большое!
Тогда можете закрыть issue (если что, несложно переоткрыть).
Я без фара, как без рук. Есть ли способ вам задонатить?
Как и все мы. 😃 Пока что главный разраб активно сопротивлялся... 🤷♂️
https://github.com/elfmz/far2l/issues/215#issuecomment-263349285 https://github.com/elfmz/far2l/issues/215#issuecomment-444461982