-
-
Notifications
You must be signed in to change notification settings - Fork 6k
Description
Currently there are various issues with screen flicker in vim. I am sure you already know about this but I can quote issue numbers for you if you want.
Modern terminals implement atomic screen updates. Emit the BSU (Begin synchronized update) escape code, emit whatever you want, emit the ESU (End synchronized update) escape code and a supporting terminal will render everything that happens in between the two in an atomic, flicker free manner. There will be no flicker caused by partial screen updates anymore.
Terminals that are known to support it: iTerm, kitty, mintty, contour, alacritty, wezterm, foot, etc.
For details see: https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036
And before you ask, no, there is no terminfo key for it.
I am not familiar with vim's codebase so cant comment on how easy/difficult it would be, but at least for some use cases, such as :redraw! and scroll it should be easy to emit the sequences before after the functions that implement these.