Bring back commit 3844, albeit in simplified form. I'd forgotten that the
one place where we still need to buffer rendering is when people hold down
up/down arrow keys.
Now it's much more apparent why things are slow. You can see each repaint
happening. Already I fixed one performance bug -- in clear-rest-of-screen.
Since this subverts Mu's fake screen there may be bugs.
Another salubrious side effect: I've finally internalized that switching
to raw mode doesn't have to clear the screen. That was just an artifact
of how termbox abstracted operations. Now I can conceive of using termbox
to build a repl as well.
(I was inspired to poke into termbox internals by
http://viewsourcecode.org/snaptoken/kilo and
https://github.com/antirez/linenoise)
On slow networks sometimes escape sequences were being partially
consumed, causing junk to be added to the editor when you pressed arrow
keys and so on. Now we have a way to wait.
Empirically seems to work if I page-up and then scroll back up using
up-arrow. Before I'd consistently get junk even on my local machine. Now
I no longer do.
If we still see problems I'll increase the wait time and see if the
increase helps. Then we'll know more about this approach.