run a program
run a program, edit
run a program, edit, make an edit, run | edit takes effect
run a program with error | big picture
run a program, edit, make an error, run
run a program, edit, ^g to a different definition, make an edit, ^e to run again
run a program, edit, ^g to a non-existent definition
run a program, edit, ^g to a different definition, ^g to a different definition, ^e to run again
start -> big picture -> edit -> move cursor -> run -> edit | cursor preserved
start -> big picture -> edit A -> move cursor -> big picture -> edit B | cursor initialized
start -> big picture -> edit -> move cursor -> run -> exit -> start | big picture (optional)
start -> big picture -> edit A -> move cursor -> run -> exit -> start -> ... -> edit B | cursor initialized
start -> big picture -> edit A -> move cursor -> run -> exit -> start -> ... -> edit B | big picture
syntax highlighting for line comments
syntax highlighting for multiline comments
start -> big picture -> recent changes -> add note -> save | note visible
start -> big picture -> arrow keys* | always exactly one definition highlighted
It's very important not to leak space on the Lua stack, particularly
proportionate to keypresses. That's a recipe for segfaults.
This implies that bouncing around between big picture, editor, recent changes,
running app.. shouldn't grow the call stack either.
== security/privacy
program draws over menu -> getch -> Teliva menu is still visible
test/attack.tlv runs without error. See its blurb for details.
TODO protect sensitive teliva files (teliva_edit_buffer, etc.)
should we protect .c sources?
TODO protect against DoS attack filling up disk
assumptions:
listing files in a directory is not worth sandboxing
since reading their contents is sandboxed
and since UNIX permissions protect system directories
rmdir() is not worth sandboxing, since it only succeeds on empty directories
no need to sandbox unlink() since it's not exposed