Commit Graph

31 Commits

Author SHA1 Message Date
Kartik K. Agaram 537ad74ccc 3862
As the finishing touch on commit 3860, completely decouple the termbox
API between moving the cursor and printing at the cursor.
2017-05-19 00:09:18 -07:00
Kartik K. Agaram ee1a18f050 3860 - stop buffering the screen in termbox
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.
2017-05-18 09:57:57 -07:00
Kartik K. Agaram 0c0d1ea5cd 3854
Revert commits 3824, 3850 and 3852. We'll redo them more carefully.
2017-05-13 12:42:17 -07:00
Kartik K. Agaram ace7ffb714 3824 - experiment: stop buffering in termbox
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)
2017-04-16 15:05:31 -07:00
Kartik K. Agaram 890f9b6142 3800 2017-03-18 22:06:42 -07:00
Kartik K. Agaram cd72379318 3798 - trace-browser: make search like in vi 2017-03-15 21:53:16 -07:00
Kartik K. Agaram 9be4a67f42 3785
Don't show empty hidden counts in the trace-browser.
2017-03-10 01:40:47 -08:00
Kartik K. Agaram c01f82b056 3783 2017-03-10 00:49:34 -08:00
Kartik K. Agaram 77f88e8cde 3782
Highlight searches in trace-browser.
2017-03-10 00:47:11 -08:00
Kartik K. Agaram 1485ee1be6 3781
Support backspacing anywhere inside the search pattern in trace-browser.
2017-03-10 00:01:38 -08:00
Kartik K. Agaram a819afb0ae 3780 2017-03-09 23:47:48 -08:00
Kartik K. Agaram fcffe1d7df 3779
Move cursor inside search pattern in trace-browser.
2017-03-09 23:47:37 -08:00
Kartik K. Agaram 4b487ef524 3778
Support backspace in trace-browser.
2017-03-09 23:24:08 -08:00
Kartik K. Agaram 9aa2fd345d 3777 - rudimentary search in trace-browser 2017-03-09 23:03:33 -08:00
Kartik K. Agaram b734ab6beb 3776
Bugfix.
2017-03-09 11:38:15 -08:00
Kartik K. Agaram 29f1b21e64 3775 2017-03-09 11:35:16 -08:00
Kartik K. Agaram 4886e4e93d 3774 2017-03-09 10:10:19 -08:00
Kartik K. Agaram 053ffdc692 3773 - trace-browser bugfix 2017-03-09 10:01:22 -08:00
Kartik K. Agaram ab146dd265 3772 2017-03-09 09:57:53 -08:00
Kartik K. Agaram 8bec2907aa 3770 2017-03-08 23:35:56 -08:00
Kartik K. Agaram 0668b1b222 3769 2017-03-08 23:16:48 -08:00
Kartik K. Agaram ab53600bd7 3768 - trace browser: scrolling horizontally 2017-03-08 22:59:40 -08:00
Kartik K. Agaram b0ef6d58e2 3767 2017-03-08 22:14:05 -08:00
Kartik K. Agaram caf1790586 3766 2017-03-08 21:48:04 -08:00
Kartik K. Agaram 06f207f315 3765 2017-03-08 21:19:11 -08:00
Kartik K. Agaram 1f3bb2eda1 3763 2017-03-07 10:21:33 -08:00
Kartik K. Agaram 8ccf992d31 3759 - make current line more salient 2017-03-06 09:40:43 -08:00
Kartik K. Agaram 1d2d6cf554 3757 - more permissive trace browser UI 2017-03-06 09:06:58 -08:00
Kartik K. Agaram 215cf3c2d8 3756 - start of some improvements to the trace browser 2017-03-05 23:24:19 -08:00
Kartik K. Agaram 6f69d5d9af 3682
Clean up the flow of "mu --trace" followed by "mu browse-trace
interactive".
2016-11-22 11:39:05 -08:00
Kartik K. Agaram f09d9076f1 3230 2016-08-20 17:54:07 -07:00