| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
|
| |
Some corrections and one bugfix to channels after reviewing their
implementation with Caleb Couch.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Bugfix: adjust row when hitting ctrl-u on wrapped lines.
|
| |
|
|
|
|
|
| |
Bugfix: ctrl-a leaves things consistent in the presence of wrapped
lines.
|
| |
|
| |
|
| |
|
|
|
|
| |
Bugfix: up-arrow in combination with wrapped lines.
|
|
|
|
| |
Bugfix: handle wrapped lines when moving to end of line.
|
|
|
|
| |
Redo commit 3905 to always shutdown cleanly on any error raised.
|
| |
|
| |
|
|
|
|
| |
Remember that `before-previous-line` deals with wrapped screen lines.
|
|
|
|
| |
Bugfix in ctrl-u.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
In tests where a text has the wrong length, properly show the text
observed to help debug failures.
We now also consistently say 'text' in Mu errors, never 'string'.
Thanks Ella Couch for reporting this long-standing issue.
|
|
|
|
|
| |
Replace an assertion failure with an error message. Thanks Ella Couch
for reporting this issue.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Yet another attempt at decomposing incremental edits in some clean way.
The new idea now is that I need to only modify the screen using a
restricted vocabulary of actions:
render-all
render-recipe-side
render-sandbox-side
render-recipe-errors
render-line-from-cursor
render-line-from-start
erase-line-from-cursor
render-character-at-cursor
erase-character-at-cursor
However, decomposing insert-at-cursor is challenging; how to manipulate
cursor-row and cursor-column without also pretending to print to screen?
Do I need to decompose `editor` into multiple containers so that I can
keep cursor-row and cursor-column with screen modifications? Here's what
`editor` looks like after all layers:
container editor [
data:&:duplex-list:char
top-of-screen:&:duplex-list:char
bottom-of-screen:&:duplex-list:char
before-cursor:&:duplex-list:char
left:num
right:num
bottom:num
cursor-row:num
cursor-column:num
indent?:bool
undo:&:list:&:operation
redo:&:list:&:operation
]
It's not obvious that there's a clean way to split all these fields.
|
|
|
|
|
|
|
| |
Standardize exit paths. Most layers now don't need to know about termbox.
We can't really use `assert` in console-mode apps; it can't just exit because
we want to be able to check assertion failures in tests.
|
|
|
|
| |
Standardize functions to put the main object being modified first.
|
|
|
|
| |
Turns out all I had to do was reset `go-render?` to false.
|
|
|
|
|
|
| |
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.)
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
There seems to be some chance of speed-up when I inline these functions.
However, it's not a clear enough signal to justify improving the `build`
script to handle the `inline` keyword.
Current timing experiments:
Before After
ubuntu 1GB 9:22,8:48,8:51,9:16,9:17,8:36,9:05 8:55,8:41,8:15,8:27,8:29,8:54,9:29
OS X 8GB 4:05,4:00,4:18,4:09,3:40,3:51,3:56 3:58,3:52,4:01,4:13,4:16,4:31,4:13
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Fix a keyboard shortcut conflict in commit 3884.
|
| |
|
| |
|
|
|
|
|
| |
We're currently spending 50% of our time in `mu edit` performing refcount
updates.
|
|
|
|
| |
Time to make my ad hoc commented out code fragments a first-class feature.
|
|
|
|
|
|
|
|
|
|
| |
It's always confusing when `break` refers to a `switch` but `continue`
refers to the loop around the `switch`. But we've done ugly things like
this and `goto` for expedience. However, we're starting to run into cases
where we now need to insert code at every `continue` or `continue`-mimicking
`goto` inside the core interpreter loop. Better to make the loop single-entry-single-exit.
Common things to run after every instruction will now happen inside the
`finish_instruction` function rather than at the `finish_instruction` label.
|
| |
|