Commit Graph

170 Commits

Author SHA1 Message Date
Kartik Agaram 23d3a02226 4266 - space for alloc-id in heap allocations
This has taken me almost 6 weeks :(
2018-06-24 09:18:20 -07:00
Kartik Agaram 01ce563dfe 4262 - literal 'null' 2018-06-17 15:57:37 -07:00
Kartik Agaram dd66068298 4261 - start using literals for 'true' and 'false'
They uncovered one bug: in edit/003-shortcuts.mu
  <scroll-down> was returning 0 for an address in one place where I
  thought it was returning 0 for a boolean.

Now we've eliminated this bad interaction between tangling and punning
literals.
2018-06-17 00:29:22 -07:00
Kartik K. Agaram aae1071005 4207 2018-02-15 23:52:29 -08:00
Kartik K. Agaram 43ac7bef4b 4205 2018-02-15 21:14:30 -08:00
Kartik K. Agaram 4a48bedcd1 4134 - 'input' = 'ingredient' 2017-12-03 23:25:40 -08:00
Kartik K. Agaram 736b26a73f 3980 2017-08-22 08:39:53 -07:00
Kartik K. Agaram 90668776a9 3977 2017-08-22 07:48:09 -07:00
Kartik K. Agaram 0f0be736fb 3962
Yet another regression, this time cascading from commit 3953. My
scenario wasn't actually testing what I thought it was testing.
2017-06-27 11:16:36 -07:00
Kartik K. Agaram 67160f82f2 3960
Don't refresh entire sandbox side when toggling the expected result for
a single sandbox.
2017-06-25 14:50:16 -07:00
Kartik K. Agaram e3c9e15361 3959
Don't unnecessarily write sandboxes to disk on F4.

This seems to save almost 20% time when processing a large lesson
directory with 36 sandboxes.
2017-06-25 13:04:04 -07:00
Kartik K. Agaram dc5f112c3e 3958
Improvement on fix 3957: rather than put a band-aid over a slow
operation, eliminate the slowdown entirely.

In this case it turns out we're unnecessarily saving files to disk when
they could never be modified. Are we doing this on F4 as well?!
2017-06-25 11:02:15 -07:00
Kartik K. Agaram d2f0704962 3957
Marking sandbox responses as expected can take a long time if there are
many sandboxes. Indicate when a click is being worked on.
2017-06-25 10:15:48 -07:00
Kartik K. Agaram 5405a972e4 3954
As a blanket rule, down-arrow now stops scrolling once the bottom margin
comes on screen.

Now that we have page-wise scrolling with ctrl-f/b and line-wise
scrolling with ctrl-s/x, we don't need to conflate scroll positioning
with the arrow keys. And as a result, early students no longer have to
struggle with accidentally scrolling part of the sandbox off the screen
when there's tons of empty space available.

`move-to-next-line` is still super messy and will need further
rethinking, but this commit simplifies the codebase as a whole by
eliminating a couple of historical accidents:

  a) We only introduced scrolling past the bottom of the screen to allow
  more sandboxes to come into view before we had scrolling for the
  sandbox side.

  b) We undid scrolling past the bottom in just the recipe side to allow
  errors to come into view.

Since these historical details are now irrelevant, we no longer need
separate logic for the recipe and sandbox sides, and we don't need to
keep track of the recipe-bottom separate from the bottom margin of
arbitrary editors.
2017-06-25 01:48:56 -07:00
Kartik K. Agaram d467b0a5b2 3950
Fix a regression caused by commit 3919.

Thanks Juan Crispin Hernandez for running into this.
2017-06-24 15:48:57 -07:00
Kartik K. Agaram 3d4fb62a12 3946
Fix the failing scenario of commit 3944.
2017-06-23 23:20:37 -07:00
Kartik K. Agaram bb97f580fb 3944
Reintroduce the failing test of commit 3938. It has two problems:

a) it's failing, and
b) it's not failing the same way as with a real screen.
2017-06-23 23:06:21 -07:00
Kartik K. Agaram 54edd3d25e 3943
Undo commit 3938 and almost everything after. Let's do this right.
2017-06-23 23:03:56 -07:00
Kartik K. Agaram a4020a806f 3939 2017-06-22 11:37:52 -07:00
Kartik K. Agaram bde85557ac 3938
Fix an out-of-bounds write to the screen when sandboxes aligned just
right.

Thanks Ella Couch for reporting this issue.
2017-06-22 11:35:22 -07:00
Kartik K. Agaram 5aac71e875 3935 2017-06-22 09:33:29 -07:00
Kartik K. Agaram e11bec5773 3929 2017-06-19 17:31:29 -07:00
Kartik K. Agaram a59f20f866 3928 2017-06-19 14:42:33 -07:00
Kartik K. Agaram b755631561 3926
Bugfix: when you hit `enter`, the cursor-row does not increment in *one*
special situation: when the line wraps and the cursor is right at the
start of one of the wrapped lines.
2017-06-19 11:19:21 -07:00
Kartik K. Agaram 458dbc54a2 3925
Bugfix: adjust row when hitting ctrl-u on wrapped lines.
2017-06-19 10:09:11 -07:00
Kartik K. Agaram 17a68d8004 3923
Bugfix: ctrl-a leaves things consistent in the presence of wrapped
lines.
2017-06-18 10:51:29 -07:00
Kartik K. Agaram 8fce01c150 3922 2017-06-17 00:07:53 -07:00
Kartik K. Agaram d2e606f42f 3921 2017-06-16 23:41:41 -07:00
Kartik K. Agaram 94c54a07a1 3920 2017-06-16 23:22:03 -07:00
Kartik K. Agaram b51797773d 3919
Bugfix: up-arrow in combination with wrapped lines.
2017-06-16 23:19:11 -07:00
Kartik K. Agaram 0f64a45c35 3918
Bugfix: handle wrapped lines when moving to end of line.
2017-06-16 21:48:16 -07:00
Kartik K. Agaram 960e75d0c6 3916 - minimal prints when commenting lines 2017-06-16 15:58:38 -07:00
Kartik K. Agaram a39f59548a 3913
Bugfix in ctrl-u.
2017-06-15 21:02:51 -07:00
Kartik K. Agaram 778787eadf 3912 2017-06-15 20:43:22 -07:00
Kartik K. Agaram f0f077661c 3904
Standardize functions to put the main object being modified first.
2017-06-09 23:42:58 -07:00
Kartik K. Agaram 6d12a8c4eb 3902 - drop redundant redraw of recipe side on F4
This change is interesting because I only updated one test to gain confidence
that F4 will never redraw the recipe side. (Most of the changes are to
explicitly render-all before each scenario.)
2017-06-09 11:29:15 -07:00
Kartik K. Agaram 2c678a4e1d 3897 - various updates to documentation 2017-05-29 14:21:32 -07:00
Kartik K. Agaram 284e557649 3894 - comment/uncomment lines in edit app 2017-05-29 02:13:43 -07:00
Kartik K. Agaram 63662f7109 3891 2017-05-29 01:10:04 -07:00
Kartik K. Agaram 898f03cc3b 3881 - allow students to turn sandboxes into recipes
Thanks Juan Crispin Hernandez for the suggestion.
2017-05-27 00:52:28 -07:00
Kartik K. Agaram aac76bca12 3880 2017-05-27 00:17:50 -07:00
Kartik K. Agaram b7fc9d3b5c 3879 2017-05-26 23:50:50 -07:00
Kartik K. Agaram 9d2d0593b4 3874
Improve fix of commit 3866.
2017-05-20 21:49:43 -07:00
Kartik K. Agaram bc870a4b84 3873 2017-05-20 21:45:02 -07:00
Kartik K. Agaram 27bd7e76a2 3869
Clean up a few superficial things in Caleb's commit.
2017-05-19 23:39:07 -07:00
Kartik K. Agaram 60679557be 3866
Yet another bugfix, this time in just the sandbox/ app:
  open sandbox/ with empty lesson/ directory
  type 'a'
  press backspace
  cursor was not moving left

Now fixed.

Turns out the sandbox/ app hadn't been working right since commit 3854.
(Which ironically was a revert but clearly didn't revert enough; the last
truly good commit was 3823, and we're still clawing our way back to the
sunlight.)

The issue in this case was that commit 3853 disabled update-cursor in some
situations when it shouldn't have. To be safe, just always update-cursor
one very event. I should probably reorganize this in edit/ as well, but
it's not necessary for this particular bug.

---

Incidentally, as part of my git bisecting I realized that the bug fixed
in the trace browser as part of commit 3862 was very old:
  press '/'
  press some key
  press ctrl-u to erase
  press some key
  = out of bounds string access
2017-05-19 17:40:03 -07:00
Kartik K. Agaram bb2e5e65a4 3865 2017-05-19 09:48:24 -07:00
Kartik K. Agaram b6fa632e2f 3861 - screen untouched when entering console mode 2017-05-18 10:14:49 -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 7f67383400 3859 2017-05-13 21:58:26 -07:00