| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
|
|
|
|
| |
All tests passing, but early layers are broken.
|
|
|
|
|
|
| |
Hmm, this is undesirable, that recipes don't need to explicitly reply.
Need to fix. Also need to have run-interactive create scenarios at some
point.
|
|
|
|
| |
Pushing back some of the weight of repetitive boilerplate.
|
|
|
|
|
| |
This is starting to look good! I need to add some tests for
render-string, but we'll see.
|
| |
|
|
|
|
| |
The trick is to check for more events and not bother rendering if so.
|
|
|
|
| |
Switch to F10 because F9 is in use under my setup.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Some reorg before we start plumbing 'reply' from 'run-interactive' to
return a string containing the results.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Also added another failing test showing what behavior we want in the
programming environment. But there's no way to make use of querying
locations, since we're not planning any interaction with individual
sandboxes at the moment.
Instead of interacting with one sandbox at a time, which is the current
approach, we want to create dashboards out of multiple sandboxes at
once. Start with them non-interactive, that'll demonstrate 80% of the
new benefits. We'll add interactivity down the road.
|
|
|
|
|
|
|
|
|
|
| |
We will need many other forms of isolation for these. For starters we're
going to have to replace most asserts with warnings that can be traced
so that the environment doesn't crash because of illegal code typed into
it.
New test is still failing. Just getting it to fail right was hard
enough.
|
| |
|
| |
|
|
|
|
|
|
| |
Focus on the one programming environment from now on: edit.mu. First get
it to print results of computations like repl does, then pipe warnings
into the environment somehow.
|
|
|
|
|
|
|
| |
'run-interactive' now takes a string as input and returns a string as
output when it generates a result. As a result we also don't have to
worry about manual tests anymore, and it should now be reusable in
edit.mu.
|
| |
|
|
|
|
|
|
|
|
|
| |
Don't render all the editors on every single keystroke, render just the
one that was modified.
This will also be useful for our next step: heterogeneous editor widgets
responsible for their areas of screen and doing their own rendering and
responding to events.
|
| |
|
|
|
|
| |
Less objectionable placeholder for syntax highlighting mu fragments.
|
| |
|
|
|
|
| |
The menu bar needs separate recipes to render and respond to events.
|
|
|
|
|
| |
Of course, editors might begin below other editors; this is a stopgap
solution. Yagni, yagni, yagni.
|
|
|
|
|
| |
More sketching out of a bare-bones scenario. What should happen when we
press F9? Print a result somewhere?
|
|
|
|
|
|
| |
Simpler gradient computation.
But in the end it looks better when the gradient is so subtle as to be
irrelevant. Might as well eliminate the gradient altogether.
|
|
|
|
| |
But integer division is a fail, as expected.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
It comes up pretty early in the codebase, but hopefully won't come up
in the mu level until we get to higher-order recipes. Potentially
intimidating name, but such prime real estate with no confusing
overloadings in other projects!
|
| |
|
|
|
|
|
| |
It should now be easy to do dynamic dispatch, create higher-order
functions, etc.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Key idea: wrap whenever you type at the right margin, don't wait for
line to grow past it. That way you always leave room to acquire the end
of the line, and you never have to worry about wrapping just the cursor
but not the line. Simplifies a lot of logic.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I started fixing scenario editor-inserts-character-at-wrapped-cursor,
but as I work further I notice there's an irreconcilable ambiguity in
the approach of letting the cursor wrap in a non-wrapped line: if a
cursor is at column 0 and the previous line occupies the entire width,
should the next character you insert go before (assuming a wrapped
cursor) or after the newline (assuming you're at the start of the next
line)? No way to distinguish the two cases.
One approach would be to delete the newline and have the cursor replace
it with whatever you type. Then you have to hit a newline again to
separate.
But the simpler way is to simply wrap the moment the line grows to
width-1, always leaving room for the cursor. Yeah, let's switch to that
approach.
|
|
|
|
| |
Move experimenting with wrapped lines to the right column.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
We'll start out with just boxes on the right. Unlike the left with its
dotted boundaries, the boundaries on the right will be solid lines, to
indicate that they are isolated from each other even as they take from
all the recipes on the left.
As students grow more advanced we'll provide some way to 'pop up' the
pre- and post-condition fields inside each sandbox. Those will also have
dotted boundaries with the rest of their sandbox.
|
| |
|
| |
|
| |
|
| |
|