diff --git a/shell/environment.mu b/shell/environment.mu index caf8cc9a..99712450 100644 --- a/shell/environment.mu +++ b/shell/environment.mu @@ -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. diff --git a/shell/global.mu b/shell/global.mu index 77d8e71e..e26b1d3c 100644 --- a/shell/global.mu +++ b/shell/global.mu @@ -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