about summary refs log tree commit diff stats
path: root/edit
diff options
context:
space:
mode:
Diffstat (limited to 'edit')
-rw-r--r--edit/001-editor.mu2
-rw-r--r--edit/002-typing.mu9
-rw-r--r--edit/004-programming-environment.mu2
-rw-r--r--edit/005-sandbox.mu29
4 files changed, 29 insertions, 13 deletions
diff --git a/edit/001-editor.mu b/edit/001-editor.mu
index 807cf442..f7b7fb89 100644
--- a/edit/001-editor.mu
+++ b/edit/001-editor.mu
@@ -207,6 +207,7 @@ def render screen:&:screen, editor:&:editor -> last-row:num, last-column:num, sc
 def clear-screen-from screen:&:screen, row:num, column:num, left:num, right:num -> screen:&:screen [
   local-scope
   load-ingredients
+  stash [clear-screen-from] row column [between] left [and] right
   # if it's the real screen, use the optimized primitive
   {
     break-if screen
@@ -217,6 +218,7 @@ def clear-screen-from screen:&:screen, row:num, column:num, left:num, right:num
   screen <- move-cursor screen, row, column
   clear-line-until screen, right
   clear-rest-of-screen screen, row, left, right
+  screen <- move-cursor screen, row, column
 ]
 
 def clear-rest-of-screen screen:&:screen, row:num, left:num, right:num -> screen:&:screen [
diff --git a/edit/002-typing.mu b/edit/002-typing.mu
index 3b29c322..05ace7c5 100644
--- a/edit/002-typing.mu
+++ b/edit/002-typing.mu
@@ -1116,8 +1116,11 @@ after <handle-special-key> [
 def draw-horizontal screen:&:screen, row:num, x:num, right:num -> screen:&:screen [
   local-scope
   load-ingredients
+  a:num, b:num <- cursor-position screen
+  stash [draw-horizontal] row [--] a b
   height:num <- screen-height screen
   past-bottom?:bool <- greater-or-equal row, height
+  stash [  past-bottom?] past-bottom?
   return-if past-bottom?
   style:char, style-found?:bool <- next-ingredient
   {
@@ -1135,12 +1138,18 @@ def draw-horizontal screen:&:screen, row:num, x:num, right:num -> screen:&:scree
     break-if bg-color-found?
     bg-color <- copy 0/black
   }
+  stash [aa] x
   screen <- move-cursor screen, row, x
   {
     continue?:bool <- lesser-or-equal x, right  # right is inclusive, to match editor semantics
     break-unless continue?
+  a b <- cursor-position screen
+  stash [bb] x [--] a b
     print screen, style, color, bg-color
+  a b <- cursor-position screen
+  stash [cc] x [--] a b
     x <- add x, 1
     loop
   }
+  stash [draw-horizontal done]
 ]
diff --git a/edit/004-programming-environment.mu b/edit/004-programming-environment.mu
index 897f2923..bcd3b524 100644
--- a/edit/004-programming-environment.mu
+++ b/edit/004-programming-environment.mu
@@ -447,6 +447,7 @@ def render-recipes screen:&:screen, env:&:environment, render-editor:render-reci
   clear-screen-from screen, row, left, left, right
   #
   assert-no-scroll screen, old-top-idx
+  stash [render recipes done]
 ]
 
 # replaced in a later layer
@@ -467,6 +468,7 @@ def render-sandbox-side screen:&:screen, env:&:environment, render-editor:render
   clear-screen-from screen, row, left, left, right
   #
   assert-no-scroll screen, old-top-idx
+  stash [render sandbox side0 done]
 ]
 
 def update-cursor screen:&:screen, recipes:&:editor, current-sandbox:&:editor, sandbox-in-focus?:bool, env:&:environment -> screen:&:screen [
diff --git a/edit/005-sandbox.mu b/edit/005-sandbox.mu
index 827f6632..2b17ecc2 100644
--- a/edit/005-sandbox.mu
+++ b/edit/005-sandbox.mu
@@ -14,6 +14,8 @@ def! main [
   env:&:environment <- new-programming-environment 0/filesystem, 0/screen
   env <- restore-sandboxes env, 0/filesystem
   render-all 0/screen, env, render
+  wait-for-some-interaction
+  $exit
   event-loop 0/screen, 0/console, env, 0/filesystem
 ]
 
@@ -268,20 +270,25 @@ def! render-sandbox-side screen:&:screen, env:&:environment, render-editor:rende
   clear-rest-of-screen screen, row, left, right
   #
   assert-no-scroll screen, old-top-idx
+  stash [render sandbox side done]
 ]
 
 def render-sandboxes screen:&:screen, sandbox:&:sandbox, left:num, right:num, row:num, render-from:num, idx:num -> row:num, screen:&:screen, sandbox:&:sandbox [
   local-scope
   load-ingredients
   return-unless sandbox
+  a:num b:num <- cursor-position screen
+  stash [render-sandboxes] idx [:] row [--] a b
   screen-height:num <- screen-height screen
+  at-bottom?:bool <- greater-or-equal row, screen-height
+  return-if at-bottom?
   hidden?:bool <- lesser-than idx, render-from
   {
     break-if hidden?
     # render sandbox menu
     row <- add row, 1
-    at-bottom?:bool <- greater-or-equal row, screen-height
-    return-if at-bottom?
+#?     at-bottom?:bool <- greater-or-equal row, screen-height
+#?     return-if at-bottom?
     screen <- move-cursor screen, row, left
     screen <- render-sandbox-menu screen, idx, left, right
     # save menu row so we can detect clicks to it later
@@ -345,30 +352,26 @@ def render-sandbox-menu screen:&:screen, sandbox-index:num, left:num, right:num
 
 scenario skip-rendering-sandbox-menu-past-bottom-row [
   trace-until 100/app  # trace too long
-  assume-screen 100/width, 7/height
+  assume-screen 100/width, 6/height
   # recipe editor is empty
   assume-resources [
+    [lesson/0] <- [|add 2, 2|]
+    [lesson/1] <- [|add 1, 1|]
   ]
   # create two sandboxes such that the top one just barely fills the screen
   env:&:environment <- new-programming-environment resources, screen, []
-  render-all screen, env, render
-  assume-console [
-    left-click 1, 75
-    type [add 1, 1]
-    press F4
-    type [add 2, 2]
-    press F4
-  ]
+  env <- restore-sandboxes env, resources
+  $clear-trace
   run [
-    event-loop screen, console, env, resources
+    render-all screen, env, render
   ]
+  $dump-trace [app]
   screen-should-contain [
     .                                                                                 run (F4)           .
     .                                                  ┊                                                 .
     .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊─────────────────────────────────────────────────.
     .                                                  ┊0   edit       copy       to recipe    delete    .
     .                                                  ┊add 2, 2                                         .
-    .                                                  ┊4                                                .
     .                                                  ┊─────────────────────────────────────────────────.
   ]
 ]