about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2020-10-09 23:29:43 -0700
committerKartik Agaram <vc@akkartik.com>2020-10-09 23:30:19 -0700
commit6e93444ff465c6e799ddf0187ca192fbe1841b11 (patch)
tree360bdc22705ccaf20a6b621ffd1b5c80ea1855ad
parent5ba974b4e58c1d870d64d8754d08bf93bbf9513b (diff)
downloadmu-6e93444ff465c6e799ddf0187ca192fbe1841b11.tar.gz
6983 - tile: right-arrow can now move out of calls
-rw-r--r--apps/tile/environment.mu15
1 files changed, 15 insertions, 0 deletions
diff --git a/apps/tile/environment.mu b/apps/tile/environment.mu
index e839effb..2fd2ef9b 100644
--- a/apps/tile/environment.mu
+++ b/apps/tile/environment.mu
@@ -120,6 +120,21 @@ $process:body: {
         cursor-right cursor-word
         break $process:body
       }
+      # if at final word, look for a caller to jump to
+      {
+        var next-word-ah/edx: (addr handle word) <- get cursor-word, next
+        var next-word/eax: (addr word) <- lookup *next-word-ah
+        compare next-word, 0
+        break-if-!=
+        var cursor-call-path-ah/edi: (addr handle call-path-element) <- get sandbox, cursor-call-path
+        var cursor-call-path/eax: (addr call-path-element) <- lookup *cursor-call-path-ah
+        var next-cursor-element-ah/ecx: (addr handle call-path-element) <- get cursor-call-path, next
+        var next-cursor-element/eax: (addr call-path-element) <- lookup *next-cursor-element-ah
+        compare next-cursor-element, 0
+        break-if-=
+        copy-object next-cursor-element-ah, cursor-call-path-ah
+        break $process:body
+      }
       # otherwise, move to a new word
       var next-word-ah/edx: (addr handle word) <- get cursor-word, next
       var next-word/eax: (addr word) <- lookup *next-word-ah