-
Notifications
You must be signed in to change notification settings - Fork 8.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Neovim Cursor Flickers from Block to Bar running in MS Terminal under Tmux #5180
Comments
Thank you for investigating this. To reproduce please run the following before to recreate the cursor flicker: tmux set -g status-right %H:%M:%S That seems to cause the cursor flicker issues. The flicker seems to occur in tandem with tmux rewriting the status bar (if you set the interval to 5, the cursor will flicker every 5s). I can confirm the same issue doesn't happen in a mintty based terminal. |
That sounds like exactly what is happening. Let me know if I can help test a beta build or when this makes it to a release. |
Now that the Terminal is doing a better job of actually marking which lines were and were not wrapped, we're not always copying lines as "wrapped" when they should be. We're more correctly marking lines as not wrapped, when previously we'd leave them marked wrapped. The real problem is here in the `ScrollFrame` method - we'd manually newline the cursor to make the terminal's viewport shift down to a new line. If we had to scroll the viewport for a _wrapped_ line, this would cause the Terminal to mark that line as broken, because conpty would emit an extra `\n` that didn't actually exist. This more correctly implements `ScrollFrame`. Now, well move where we "thought" the cursor was, so when we get to the next `PaintBufferLine`, if the cursor needs to newline for the next line, it'll newline, but if we're in the middle of a wrapped line, we'll just keep printing the wrapped line. A couple follow up bugs were found to be caused by the same bad logic. See #5039 and #5161 for more details on the investigations there. ## References * #4741 RwR, which probably made this worse * #5122, which I branched off of * #1245, #357 - a pair of other conpty wrapped lines bugs * #5228 - A followup issue for this PR ## PR Checklist * [x] Closes #5113 * [x] Closes #5180 (by fixing DECRST 25) * [x] Closes #5039 * [x] Closes #5161 (by ensuring we only `removeSpaces` on the actual bottom line) * [x] I work here * [x] Tests added/passed * [n/a] Requires documentation to be updated ## Validation Steps Performed * Checked the cases from #1245, #357 to validate that they still work * Added more and more tests for these scenarios, and then I added MORE tests * The entire team played with this in selfhost builds
🎉This issue was addressed in #5181, which has now been successfully released as Handy links: |
This bug does not seem fixed in the latest release. Possible to reopen? From about this is my version: |
Doesn't look fixed to me either, when I am in Insert mode in Neovim (with tmux) the cursor is flickering between line mode and block mode. Version; 1.11.2421.0 |
Environment
Steps to reproduce
Expected behavior
Cursor should remain a line and not flicker. (this is the behavior in WSLtty)
Actual behavior
Cursor flickers between block and line.
The text was updated successfully, but these errors were encountered: