about summary refs log tree commit diff stats
path: root/070display.cc
Commit message (Collapse)AuthorAgeFilesLines
* 2377 - stop using operator[] in mapKartik K. Agaram2015-11-061-29/+29
| | | | | | | | | | | | | | | | I'm still seeing all sorts of failures in turning on layer 11 of edit/, so I'm backing away and nailing down every culprit I run into. First up: stop accidentally inserting empty objects into maps during lookups. Commands run: $ sed -i 's/\(Recipe_ordinal\|Recipe\|Type_ordinal\|Type\|Memory\)\[\([^]]*\)\] = \(.*\);/put(\1, \2, \3);/' 0[1-9]* $ vi 075scenario_console.cc # manually fix up Memory[Memory[CONSOLE]] $ sed -i 's/\(Memory\)\[\([^]]*\)\]/get_or_insert(\1, \2)/' 0[1-9]* $ sed -i 's/\(Recipe_ordinal\|Type_ordinal\)\[\([^]]*\)\]/get(\1, \2)/' 0[1-9]* $ sed -i 's/\(Recipe\|Type\)\[\([^]]*\)\]/get(\1, \2)/' 0[1-9]* Now mu dies pretty quickly because of all the places I try to lookup a missing value.
* 2258 - separate warnings from errorsKartik K. Agaram2015-10-061-23/+27
| | | | | | | At the lowest level I'm reluctantly starting to see the need for errors that stop the program in its tracks. Only way to avoid memory corruption and security issues. But beyond that core I still want to be as lenient as possible at higher levels of abstraction.
* 2232Kartik K. Agaram2015-10-011-8/+96
|
* 2226 - standardize warning formatKartik K. Agaram2015-10-011-7/+7
| | | | | | | | Always show recipe name where error occurred. But don't show internal 'interactive' name for sandboxes, that's just confusing. What started out as warnings are now ossifying into errors that halt all execution. Is this how things went with C and Unix as well?
* 2113 - stop updating entire screen on tb_present()Kartik K. Agaram2015-08-291-0/+10
| | | | | | | | | | | | | | | | | | | | Mu still isn't so optimized that I can be profligate with spare cycles. Instead we'll follow termbox-go's example and create a new API routine called tb_sync() (after discussion with termbox's author). Now we only need use tb_sync() on ctrl-l. For everything else use the optimized render. Now I think I've eradicated all signs of "cursor thrashing" during refresh, in spite of how slow mu is as an interpreted language. We only render the whole screen in some situations, and only if there's no more input, and even then we only refresh the parts of the screen that changed. Thanks Jack and Caleb Couch for providing the impetus behind commits 2109-2113. I've been lazy about writing tests for all this, but it's still good to know I could, if I wanted to.
* 2095Kartik K. Agaram2015-08-281-1/+0
| | | | | | | | | | | | Finally terminate the experiment of keeping debug prints around. I'm also going to give up on maintaining counts. What we really need is two kinds of tracing: a) For tests, just the domain-specific facts, organized by labels. b) For debugging, just transient dumps to stdout. b) only works if stdout is clean by default. Hmm, I think this means 'stash' should be the transient kind of trace.
* 2079Kartik K. Agaram2015-08-261-13/+0
| | | | Cleanup 2078.
* 2078 - update entire screen on tb_present()Kartik K. Agaram2015-08-261-0/+9
| | | | | | | | | | | | | | | | | | | Termbox had been taking shortcuts when it thinks the screen hasn't changed, which doesn't work if some other process messes up the screen. The Go version has a Sync method in addition to Flush/tb_present for precisely this eventuality. But it feels like an unnecessary optimization given C's general speed. Just drop it altogether. --- This took me a long time to track down, and interestingly I found myself writing a new tracing primitive before I remembered how to selectively trace just certain layers during manual tests. I'm scared of generating traces not because of performance but because of the visual noise. Be aware of this. I'm going to clean up $log now. Maybe I should also stop using $print..
* 2042Kartik K. Agaram2015-08-201-0/+7
| | | | | | Mouse clicks towards the right of very wide windows weren't working. Turns out to be a limitation of the X10 protocol: https://github.com/nsf/termbox-go/issues/32
* 1981 - clear screen below editors in CKartik K. Agaram2015-08-121-0/+23
| | | | | Environment much more responsive now. And it doesn't slow down as much just because I'm on a larger screen.
* 1963 - redraw if window size changesKartik K. Agaram2015-08-091-3/+9
| | | | | This was important because somebody connecting on tmux would mess up the environment.
* 1848 - core instructions now check for ingredientsKartik K. Agaram2015-07-251-12/+28
| | | | Also standardized warnings.
* 1731 - ah, now fully responsiveKartik K. Agaram2015-07-081-0/+11
| | | | The trick is to check for more events and not bother rendering if so.
* 1705 - change background colorKartik K. Agaram2015-07-041-10/+16
|
* 1702 - experiment: start using 'ordinal' in namesKartik K. Agaram2015-07-041-19/+19
| | | | | | | 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!
* 1656 - smooth refresh doneKartik K. Agaram2015-06-251-9/+31
| | | | Had to take control of tb_present() after all. Termbox was wise.
* 1655 - first attempt at smooth refresh: hide-cursorKartik K. Agaram2015-06-251-0/+20
| | | | | But it doesn't work, because moving the cursor inside 'render' also starts displaying it again.
* 1641Kartik K. Agaram2015-06-241-0/+2
| | | | | | Snapshot in switching editor-data.cursor to editor-data.before-cursor. But I have trouble coercing events to touch events, even though using the integer tag 2 for the conversion works.
* 1640Kartik K. Agaram2015-06-241-1/+1
| | | | | | | | Another bug in manually running the editor. At least show the error message when you raise warnings in console mode. Later we'll want to create a separate side channel and transparently plumb warnings to the 'menu bar' of the editor..
* 1618Kartik K. Agaram2015-06-211-8/+8
|
* 1616 - merging keyboard and events into 'console'Kartik K. Agaram2015-06-211-28/+51
| | | | | Only core layers currently passing. Console apps are probably still broken.
* 1614Kartik K. Agaram2015-06-211-3/+0
|
* 1545 - sketching out a simple editor widgetKartik K. Agaram2015-06-081-0/+22
|
* 1543Kartik K. Agaram2015-06-071-2/+2
|
* 1530 - switch to termbox's 256-color modeKartik K. Agaram2015-06-051-5/+5
|
* 1518 - still horribly brokenKartik K. Agaram2015-06-011-0/+1
| | | | | | Just figured out why a first keystroke of backspace was sending me out for a spin: run_interactive needs all early exits that don't actually run anything to increment the current_step_index(). FML, this is lousy..
* 1487 - repl working interactivelyKartik K. Agaram2015-05-271-3/+3
|
* 1486 - repl: hitting enter now workingKartik K. Agaram2015-05-271-2/+12
|
* 1457 - print to display in colorKartik K. Agaram2015-05-251-1/+6
| | | | Just foreground color for now.
* 1391 - avoid unsigned integersKartik K. Agaram2015-05-171-10/+10
|
* 1368 - alias carriage-return and newlineKartik K. Agaram2015-05-141-2/+3
| | | | | | | CRLF still shows as two newlines, though. Cross that bridge when we get to it. The new chessboard test is still hanging, though.
* 1357 - temporarily revert floating-point supportKartik K. Agaram2015-05-121-3/+3
|
* 1356 - snapshot #2: floating point supportKartik K. Agaram2015-05-121-3/+3
| | | | | | | | | | | | | | | I added one test to check that divide can return a float, then hacked at the rippling failures across the entire entire codebase until all tests pass. Now I need to look at the changes I made and see if there's a system to them, identify other places that I missed, and figure out the best way to cover all cases. I also need to show real rather than encoded values in the traces, but I can't use value() inside reagent methods because of the name clash with the member variable. So let's take a snapshot before we attempt any refactoring. This was non-trivial to get right. Even if I convince myself that I've gotten it right, I might back this all out if I can't easily *persuade others* that I've gotten it right.
* 1330Kartik K. Agaram2015-05-101-0/+3
|
* 1323 - keyboard supports backspace and newlineKartik K. Agaram2015-05-101-16/+38
| | | | | | Lots mixed into this commit: some off-by-one errors in display.cc a new transform to translate jump labels that I'd somehow never gotten around to supporting
* 1322 - ctrl-c should always interruptKartik K. Agaram2015-05-101-0/+1
|
* 1318 - 1317 actually works nowKartik K. Agaram2015-05-101-0/+1
|
* 1315 - chessboard now working interactivelyKartik K. Agaram2015-05-091-1/+2
| | | | | | | | | | | | | | | | | | | | I tried to bring too much into this commit, and paid the price with some debugging effort. Still havent't tried to enable line buffering, but I'll take a snapshot. Some tests are failing because of the huge hack in the scheduler. For a while I thought there was a bug in termbox because I kept seeing segfaults and valgrind complained about out-of-bounds access. But that was just subsidiary threads trying to print to the screen after I'd returned to console mode. Maybe I should add a test for send-keys-to-channel. Or just use a fake keyboard rather than a channel. And *then* there's the fact that the interaction is molasses slow. Slower than the arc version even though the tests run so much faster. And what's with the long pauses in printing strings to screen?
* 1298 - better ingredient/product handlingKartik K. Agaram2015-05-071-32/+21
| | | | | | | | | | | | | | | | | | | All primitives now always write to all their products. If a product is not used that's fine, but if an instruction seems to expect too many products mu will complain. In the process, many primitives can operate on more than two ingredients where it seems intuitive. You can add or divide more than two numbers together, copy or negate multiple corresponding locations, etc. There's one remaining bit of ugliness. Some instructions like get/get-address, index/index-address, wait-for-location, these can unnecessarily load values from memory when they don't need to. Useful vim commands: %s/ingredients\[\([^\]]*\)\]/ingredients.at(\1)/gc %s/products\[\([^\]]*\)\]/products.at(\1)/gc .,$s/\[\(.\)]/.at(\1)/gc
* 1276 - make C++ version the defaultKartik K. Agaram2015-05-051-0/+212
I've tried to update the Readme, but there are at least a couple of issues.