| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Longer name, but it doesn't lie. We have no data structure right now for
combining multiple code points. And it makes no sense for the notion of
a grapheme to conflate its Unicode encoding.
|
|
|
|
|
|
| |
I'm loading them in uncompressed ASCII format, and all streams and gap
buffers all over the place need to get massively scaled up to 256KB
capacity. But the tests don't yet run out of RAM, so I'll keep going.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Before I only separately counted calls at each stack depth. I don't remember
if that seemed good enough or was just an oversight.
|
|
|
|
|
| |
Roll back to commit 70919b45f0. Recent commits add lots of extra function
args for dubious benefit.
|
| |
|
|
|
|
|
|
| |
Rename cells containing screens to screen vars because of the ambiguity
that each grapheme in fake screens is represented by a type screen-cell.
While we're at it, we also analogously rename keyboard vars.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
After all that, I'm not sure this is the desired behavior. If a function
defines multiple bindings, we shouldn't rename all their keys. So how to
choose?
Perhaps it's not so bad to have "symlinks" in this "file system". To unlink
two bindings you now need to define one of them in the sandbox.
All the refactoring is still useful, though.
|
| |
|
| |
|
| |
|
|
|
|
| |
Add argument to a few functions.
|
|
|
|
|
| |
I'm temporarily disabling the pending state. I'm also providing a clearer
error message when we encounter the bug.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It turns out there's another problem, and it predates the ability to create
new definitions:
ctrl-s triggers a call to `evaluate`, which inserts a new definition
into globals. which has a null gap buffer.
All this happens long before the new code in this commit, resulting in a
null gap buffer by the time we get to word-at-cursor.
Which in turn happens because we perform a raw `evaluate`, which doesn't
update the gap buffer like `run` does (using `maybe-stash-gap-buffer-to-global`).
And arguably `evaluate` shouldn't mess with the gap buffer. Gap buffers
are a UI concern.
The hardest version of this immediate scenario: It's unclear how to guarantee
that every definition have a gap buffer, when two definitions may share
one (closures sharing a lexical environment).
New plan:
- improve the logic for detecting definitions. Looking at the outermost
layer isn't enough. And a single expression can create multiple definitions.
- extract a helper to attach a single gap buffer to multiple definitions.
- have the UI detect conflicts in gap buffers and prompt the user for
a decision if a different gap buffer already exists for a definition.
|
| |
|
| |
|
|
|
|
|
| |
Requires a change to mu.subx, to unify literal strings with generic
(addr array _)
|
| |
|
|
|
|
| |
Probably not ideal, but it's a start.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
I wrote a comment about how some code was not covered by tests, and then
promptly forgot what it was for. This is why we need tests.
Now the hack is gone.
|
|
|
|
| |
This introduces some ergonomic issues. But we have to start somewhere.
|
|
|
|
| |
We need a place to show error messages. Maybe on the top row?
|
| |
|
| |
|
|
|
|
|
| |
I had a nice clean definition for word-at-cursor, but it's wrong and I'm
going to have to mangle it.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Always shows at top-most function.
Can't actually do any editing yet.
|
| |
|
| |
|
| |
|
|
|
|
| |
Keyboard state machine for jumping to function definition.
|
| |
|
| |
|
| |
|
| |
|
| |
|