about summary refs log tree commit diff stats
path: root/shell/environment.mu
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2021-06-03 20:49:24 -0700
committerKartik K. Agaram <vc@akkartik.com>2021-06-03 20:49:24 -0700
commit1c6b965a7f2d072a5f2ce310b75a9a8a1a9a282d (patch)
tree4a3ce30badb3582f8eabe6a14d17e95079096335 /shell/environment.mu
parentd00f8dc6ca563c83c517b4f9943e25469bc678ee (diff)
downloadmu-1c6b965a7f2d072a5f2ce310b75a9a8a1a9a282d.tar.gz
starting to support function editing
Diffstat (limited to 'shell/environment.mu')
-rw-r--r--shell/environment.mu11
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.