starting to support function editing

This commit is contained in:
Kartik K. Agaram 2021-06-03 20:49:24 -07:00
parent d00f8dc6ca
commit 1c6b965a7f
2 changed files with 13 additions and 1 deletions

View File

@ -1,6 +1,7 @@
type environment {
globals: global-table
sandbox: sandbox
cursor-in-globals?: boolean
}
fn initialize-environment _self: (addr environment) {
@ -24,6 +25,7 @@ fn render-environment screen: (addr screen), _self: (addr environment) {
fn edit-environment _self: (addr environment), key: byte, data-disk: (addr disk) {
var self/esi: (addr environment) <- copy _self
var cursor-in-globals?/ecx: (addr boolean) <- get self, cursor-in-globals?
var globals/edi: (addr global-table) <- get self, globals
var sandbox/esi: (addr sandbox) <- get self, sandbox
# ctrl-r
@ -76,7 +78,14 @@ fn edit-environment _self: (addr environment), key: byte, data-disk: (addr disk)
#
return
}
edit-sandbox sandbox, key, globals, data-disk, 1/tweak-real-screen
# dispatch the key to either sandbox or globals
{
compare *cursor-in-globals?, 0/false
break-if-!=
edit-sandbox sandbox, key, globals, data-disk, 1/tweak-real-screen
return
}
edit-globals globals, key, data-disk
}
# Gotcha: some saved state may not load.

View File

@ -181,6 +181,9 @@ fn render-globals screen: (addr screen), _self: (addr global-table) {
render-primitives screen, 1/xmin=padding-left, 0x55/xmax, 0x2f/ymax
}
fn edit-globals _self: (addr global-table), key: byte, data-disk: (addr disk) {
}
fn assign-or-create-global _self: (addr global-table), name: (addr array byte), value: (handle cell), trace: (addr trace) {
var self/esi: (addr global-table) <- copy _self
compare self, 0