about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* 3908Kartik K. Agaram2017-06-151-1/+18
| | | | | Replace an assertion failure with an error message. Thanks Ella Couch for reporting this issue.
* 3907 - standardize test failure messagesKartik K. Agaram2017-06-155-102/+66
|
* 3906Kartik K. Agaram2017-06-102-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* 3905Kartik K. Agaram2017-06-107-24/+27
| | | | | | | 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.
* 3904Kartik K. Agaram2017-06-099-50/+50
| | | | Standardize functions to put the main object being modified first.
* 3903 - minimal render when pressing 'tab'Kartik K. Agaram2017-06-0911-3686/+3902
| | | | Turns out all I had to do was reset `go-render?` to false.
* 3902 - drop redundant redraw of recipe side on F4Kartik K. Agaram2017-06-0924-3339/+3446
| | | | | | 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.)
* 3901Kartik K. Agaram2017-06-0913-1255/+1237
|
* 3900Kartik K. Agaram2017-06-0232-275/+271
|
* 3899Kartik K. Agaram2017-06-021-0/+15
|
* 3898Kartik K. Agaram2017-05-311-34/+14
| | | | | | | | | | | 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
* 3897 - various updates to documentationKartik K. Agaram2017-05-2966-1180/+1217
|
* 3896Kartik K. Agaram2017-05-292-4/+4
|
* 3895Kartik K. Agaram2017-05-2925-8774/+9151
|
* 3894 - comment/uncomment lines in edit appKartik K. Agaram2017-05-294-6/+268
|
* 3893Kartik K. Agaram2017-05-292-115/+147
|
* 3892Kartik K. Agaram2017-05-291-4/+4
| | | | Fix a keyboard shortcut conflict in commit 3884.
* 3891Kartik K. Agaram2017-05-292-12/+12
|
* 3890Kartik K. Agaram2017-05-291-1/+0
|
* 3889 - profile refcount updates by recipeKartik K. Agaram2017-05-293-3/+49
| | | | | We're currently spending 50% of our time in `mu edit` performing refcount updates.
* 3888 - beginnings of a profilerKartik K. Agaram2017-05-284-22/+60
| | | | Time to make my ad hoc commented out code fragments a first-class feature.
* 3887 - clean up early exits in interpreter loopKartik K. Agaram2017-05-287-33/+57
| | | | | | | | | | 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.
* 3886Kartik K. Agaram2017-05-281-5/+5
|
* 3885Kartik K. Agaram2017-05-281-0/+21
|
* 3884 - per-line scroll in edit/ appKartik K. Agaram2017-05-282-0/+63
|
* 3883Kartik K. Agaram2017-05-2717-1740/+1977
|
* 3882Kartik K. Agaram2017-05-271-9/+32
| | | | | | | Hook up fake screen to scroll properly on cursor-down. Thanks Lakshman Swaminathan for finding this hole in commit 3860 with your incessant fidgeting :)
* 3881 - allow students to turn sandboxes into recipesKartik K. Agaram2017-05-2710-101/+302
| | | | Thanks Juan Crispin Hernandez for the suggestion.
* 3880Kartik K. Agaram2017-05-273-32/+24
|
* 3879Kartik K. Agaram2017-05-266-80/+68
|
* 3878Kartik K. Agaram2017-05-262-105/+111
|
* 3877Kartik K. Agaram2017-05-2680-644/+634
|
* 3876Kartik K. Agaram2017-05-216-377/+393
| | | | Thanks Ella Couch for reporting this issue.
* 3875Kartik K. Agaram2017-05-215-994/+992
|
* 3874Kartik K. Agaram2017-05-201-2/+1
| | | | Improve fix of commit 3866.
* 3873Kartik K. Agaram2017-05-202-3/+4
|
* 3872Kartik K. Agaram2017-05-204-506/+536
| | | | Starting to look for lack of organization in the edit/ app.
* 3871Kartik K. Agaram2017-05-208-917/+905
| | | | | | | | Strange race condition: if I repeatedly press <enter> and <backspace> so the screen is constantly playing catch up, it will sometimes fail these assertions when it does eventually catch up. Somehow the cursor ends up misplaced. Let's just take them out. It's likely some low-level implementation detail of the terminal.
* 3870 - seldom draw both sides of edit/Kartik K. Agaram2017-05-209-533/+547
|
* 3869Kartik K. Agaram2017-05-1912-2770/+3024
| | | | Clean up a few superficial things in Caleb's commit.
* 3868 - make ctrl-k and ctrl-u fasterCaleb Couch2017-05-201-2/+131
|
* 3867Kartik K. Agaram2017-05-1927-6281/+6313
|
* 3866Kartik K. Agaram2017-05-192-2/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* 3865Kartik K. Agaram2017-05-194-4/+0
|
* 3864Kartik K. Agaram2017-05-191-2/+2
| | | | | | | | Being able to `cout` directly in raw mode isn't going to be more than a neat gimmick; we need to maintain control over colors. (The sandbox/ app was getting messed up because it just so happened that the next thing being printed to screen after the `Run` button was clear-display-from, which used `cout` with the same colors as the button.)
* 3863Kartik K. Agaram2017-05-192-9/+22
| | | | Thanks Lakshman Swaminathan for running into this bug.
* 3862Kartik K. Agaram2017-05-194-46/+48
| | | | | As the finishing touch on commit 3860, completely decouple the termbox API between moving the cursor and printing at the cursor.
* 3861 - screen untouched when entering console modeKartik K. Agaram2017-05-1814-2/+14
|
* 3860 - stop buffering the screen in termboxKartik K. Agaram2017-05-1824-395/+277
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* 3859Kartik K. Agaram2017-05-132-0/+2
|