diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2021-06-03 20:49:24 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2021-06-03 20:49:24 -0700 |
commit | 1c6b965a7f2d072a5f2ce310b75a9a8a1a9a282d (patch) | |
tree | 4a3ce30badb3582f8eabe6a14d17e95079096335 /shell/environment.mu | |
parent | d00f8dc6ca563c83c517b4f9943e25469bc678ee (diff) | |
download | mu-1c6b965a7f2d072a5f2ce310b75a9a8a1a9a282d.tar.gz |
starting to support function editing
Diffstat (limited to 'shell/environment.mu')
-rw-r--r-- | shell/environment.mu | 11 |
1 files changed, 10 insertions, 1 deletions
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. |