| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
As the finishing touch on commit 3860, completely decouple the termbox
API between moving the cursor and printing at the cursor.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
To achieve this we have to switch to a model of the screen in termbox that
is closer to the underlying terminal.
Before:
a screen is a grid of characters
writing out of bounds does nothing
After:
a screen is a scrolling raster of characters
writing out of bounds wraps to next line and scrolls if necessary
To move to the new model, it was essential that I migrate my fake screen
at the same time to mimic it. This is why the first attempt (commit 3824)
failed (commit 3858). This is also why this commit can't be split into
smaller pieces.
The fake screen now 'scrolls' by rotating screen lines from top to bottom.
There's still no notion of a scrollback buffer.
The newer model is richer; it permits repl-like apps that upstream termbox
can't do easily. It also permits us to simply use `printf` or `cout` to
write to the screen, and everything mostly works as you would expect. Exceptions:
a) '\n' won't do what you expect. You need to explicitly print both '\n'
and '\r'.
b) backspace won't do what you expect. It only moves the cursor back,
without erasing the previous character. It does not wrap.
Both behaviors exactly mimic my existing terminal's emulation of vt100.
The catch: it's easy to accidentally scroll in apps. Out-of-bounds prints
didn't matter before, but they're bugs now. To help track them down, use
the `save-top-idx`, `assert-no-scroll` pair of helpers.
An important trick is to wrap the cursor before rather after printing
a character. Otherwise we end up scrolling every time we print to the
bottom-right character. This means that the cursor position can be invalid
at the start of a print, and we need to handle that.
In the process we also lose the ability to hide and show the screen. We
have to show the prints happening. Seems apt for a "white-box" platform
like Mu.
|
|
|
|
| |
Revert commits 3824, 3850 and 3852. We'll redo them more carefully.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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)
|
| |
|
| |
|
|
|
|
| |
Don't show empty hidden counts in the trace-browser.
|
| |
|
|
|
|
| |
Highlight searches in trace-browser.
|
|
|
|
| |
Support backspacing anywhere inside the search pattern in trace-browser.
|
| |
|
|
|
|
| |
Move cursor inside search pattern in trace-browser.
|
|
|
|
| |
Support backspace in trace-browser.
|
| |
|
|
|
|
| |
Bugfix.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Clean up the flow of "mu --trace" followed by "mu browse-trace
interactive".
|
|
|