about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2016-11-27 12:51:40 -0800
committerKartik K. Agaram <vc@akkartik.com>2016-11-27 12:55:22 -0800
commit9baf76ec488a0216db746db8e89c31a1821e3200 (patch)
tree73df425bbc7264d99f86b34b1350993543322bbb
parentef5006dd6a3def8fb3670fb618d66cc047733327 (diff)
downloadmu-9baf76ec488a0216db746db8e89c31a1821e3200.tar.gz
3696
Decouple editor initialization from rendering to screen. This hugely
simplifies the header of 'new-editor' and makes clear that it was only
using the screen for rendering.
-rw-r--r--edit/001-editor.mu73
-rw-r--r--edit/002-typing.mu63
-rw-r--r--edit/003-shortcuts.mu161
-rw-r--r--edit/004-programming-environment.mu4
-rw-r--r--edit/005-sandbox.mu2
-rw-r--r--edit/012-editor-undo.mu58
-rw-r--r--html/edit/001-editor.mu.html73
-rw-r--r--html/edit/002-typing.mu.html63
-rw-r--r--html/edit/003-shortcuts.mu.html161
-rw-r--r--html/edit/004-programming-environment.mu.html4
-rw-r--r--html/edit/005-sandbox.mu.html2
-rw-r--r--html/edit/012-editor-undo.mu.html58
12 files changed, 386 insertions, 336 deletions
diff --git a/edit/001-editor.mu b/edit/001-editor.mu
index 54a35391..170468cd 100644
--- a/edit/001-editor.mu
+++ b/edit/001-editor.mu
@@ -7,17 +7,18 @@ def! main text:text [
   load-ingredients
   open-console
   hide-screen 0/screen
-  new-editor text, 0/screen, 0/left, 5/right
+  new-editor text, 0/left, 5/right
   show-screen 0/screen
   wait-for-event 0/console
   close-console
 ]
 
-scenario editor-initially-prints-text-to-screen [
+scenario editor-renders-text-to-screen [
   local-scope
   assume-screen 10/width, 5/height
+  e:&:editor <- new-editor [abc], 0/left, 10/right
   run [
-    new-editor [abc], screen, 0/left, 10/right
+    render screen, e
   ]
   screen-should-contain [
     # top line of screen reserved for menu
@@ -45,10 +46,9 @@ container editor [
   cursor-column:num
 ]
 
-# creates a new editor widget and renders its initial appearance to screen
-#   top/left/right constrain the screen area available to the new editor
+# creates a new editor widget
 #   right is exclusive
-def new-editor s:text, screen:&:screen, left:num, right:num -> result:&:editor, screen:&:screen [
+def new-editor s:text, left:num, right:num -> result:&:editor [
   local-scope
   load-ingredients
   # no clipping of bounds
@@ -66,8 +66,6 @@ def new-editor s:text, screen:&:screen, left:num, right:num -> result:&:editor,
   *result <- put *result, top-of-screen:offset, init
   *result <- put *result, before-cursor:offset, init
   result <- insert-text result, s
-  # initial render to screen, just for some old tests
-  _, _, screen, result <- render screen, result
   <editor-initialization>
 ]
 
@@ -98,7 +96,7 @@ scenario editor-initializes-without-data [
   local-scope
   assume-screen 5/width, 3/height
   run [
-    e:&:editor <- new-editor 0/data, screen, 2/left, 5/right
+    e:&:editor <- new-editor 0/data, 2/left, 5/right
     2:editor/raw <- copy *e
   ]
   memory-should-contain [
@@ -108,7 +106,7 @@ scenario editor-initializes-without-data [
     # 5 (before cursor) <- the § sentinel
     6 <- 2  # left
     7 <- 4  # right  (inclusive)
-    8 <- 1  # bottom
+    8 <- 0  # bottom (not set until render)
     9 <- 1  # cursor row
     10 <- 2  # cursor column
   ]
@@ -255,13 +253,14 @@ def clear-rest-of-screen screen:&:screen, row:num, left:num, right:num -> screen
   }
 ]
 
-scenario editor-initially-prints-multiple-lines [
+scenario editor-prints-multiple-lines [
   local-scope
   assume-screen 5/width, 5/height
-  run [
-    s:text <- new [abc
+  s:text <- new [abc
 def]
-    new-editor s, screen, 0/left, 5/right
+  e:&:editor <- new-editor s, 0/left, 5/right
+  run [
+    render screen, e
   ]
   screen-should-contain [
     .     .
@@ -271,12 +270,12 @@ def]
   ]
 ]
 
-scenario editor-initially-handles-offsets [
+scenario editor-handles-offsets [
   local-scope
   assume-screen 5/width, 5/height
+  e:&:editor <- new-editor [abc], 1/left, 5/right
   run [
-    s:text <- new [abc]
-    new-editor s, screen, 1/left, 5/right
+    render screen, e
   ]
   screen-should-contain [
     .     .
@@ -285,13 +284,14 @@ scenario editor-initially-handles-offsets [
   ]
 ]
 
-scenario editor-initially-prints-multiple-lines-at-offset [
+scenario editor-prints-multiple-lines-at-offset [
   local-scope
   assume-screen 5/width, 5/height
-  run [
-    s:text <- new [abc
+  s:text <- new [abc
 def]
-    new-editor s, screen, 1/left, 5/right
+  e:&:editor <- new-editor s, 1/left, 5/right
+  run [
+    render screen, e
   ]
   screen-should-contain [
     .     .
@@ -301,12 +301,12 @@ def]
   ]
 ]
 
-scenario editor-initially-wraps-long-lines [
+scenario editor-wraps-long-lines [
   local-scope
   assume-screen 5/width, 5/height
+  e:&:editor <- new-editor [abc def], 0/left, 5/right
   run [
-    s:text <- new [abc def]
-    new-editor s, screen, 0/left, 5/right
+    render screen, e
   ]
   screen-should-contain [
     .     .
@@ -322,12 +322,12 @@ scenario editor-initially-wraps-long-lines [
   ]
 ]
 
-scenario editor-initially-wraps-barely-long-lines [
+scenario editor-wraps-barely-long-lines [
   local-scope
   assume-screen 5/width, 5/height
+  e:&:editor <- new-editor [abcde], 0/left, 5/right
   run [
-    s:text <- new [abcde]
-    new-editor s, screen, 0/left, 5/right
+    render screen, e
   ]
   # still wrap, even though the line would fit. We need room to click on the
   # end of the line
@@ -345,11 +345,12 @@ scenario editor-initially-wraps-barely-long-lines [
   ]
 ]
 
-scenario editor-initializes-empty-text [
+scenario editor-with-empty-text [
   local-scope
   assume-screen 5/width, 5/height
+  e:&:editor <- new-editor [], 0/left, 5/right
   run [
-    e:&:editor <- new-editor [], screen, 0/left, 5/right
+    render screen, e
     3:num/raw <- get *e, cursor-row:offset
     4:num/raw <- get *e, cursor-column:offset
   ]
@@ -369,11 +370,12 @@ scenario editor-initializes-empty-text [
 scenario render-colors-comments [
   local-scope
   assume-screen 5/width, 5/height
-  run [
-    s:text <- new [abc
+  s:text <- new [abc
 # de
 f]
-    new-editor s, screen, 0/left, 5/right
+  e:&:editor <- new-editor s, 0/left, 5/right
+  run [
+    render screen, e
   ]
   screen-should-contain [
     .     .
@@ -451,11 +453,12 @@ def get-color color:num, c:char -> color:num [
 scenario render-colors-assignment [
   local-scope
   assume-screen 8/width, 5/height
-  run [
-    s:text <- new [abc
+  s:text <- new [abc
 d <- e
 f]
-    new-editor s, screen, 0/left, 8/right
+  e:&:editor <- new-editor s, 0/left, 8/right
+  run [
+    render screen, e
   ]
   screen-should-contain [
     .        .
diff --git a/edit/002-typing.mu b/edit/002-typing.mu
index 906422f5..a584e6a3 100644
--- a/edit/002-typing.mu
+++ b/edit/002-typing.mu
@@ -6,7 +6,7 @@ def! main text:text [
   local-scope
   load-ingredients
   open-console
-  editor:&:editor <- new-editor text, 0/screen, 5/left, 45/right
+  editor:&:editor <- new-editor text, 5/left, 45/right
   editor-event-loop 0/screen, 0/console, editor
   close-console
 ]
@@ -283,7 +283,7 @@ def editor-render screen:&:screen, editor:&:editor -> screen:&:screen, editor:&:
 scenario editor-handles-empty-event-queue [
   local-scope
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [abc], screen, 0/left, 10/right
+  e:&:editor <- new-editor [abc], 0/left, 10/right
   editor-render screen, e
   assume-console []
   run [
@@ -300,7 +300,7 @@ scenario editor-handles-empty-event-queue [
 scenario editor-handles-mouse-clicks [
   local-scope
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [abc], screen, 0/left, 10/right
+  e:&:editor <- new-editor [abc], 0/left, 10/right
   editor-render screen, e
   $clear-trace
   assume-console [
@@ -327,7 +327,7 @@ scenario editor-handles-mouse-clicks [
 scenario editor-handles-mouse-clicks-outside-text [
   local-scope
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [abc], screen, 0/left, 10/right
+  e:&:editor <- new-editor [abc], 0/left, 10/right
   $clear-trace
   assume-console [
     left-click 1, 7  # last line, to the right of text
@@ -349,7 +349,7 @@ scenario editor-handles-mouse-clicks-outside-text-2 [
   assume-screen 10/width, 5/height
   s:text <- new [abc
 def]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   $clear-trace
   assume-console [
     left-click 1, 7  # interior line, to the right of text
@@ -371,7 +371,7 @@ scenario editor-handles-mouse-clicks-outside-text-3 [
   assume-screen 10/width, 5/height
   s:text <- new [abc
 def]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   $clear-trace
   assume-console [
     left-click 3, 7  # below text
@@ -392,7 +392,7 @@ scenario editor-handles-mouse-clicks-outside-column [
   local-scope
   assume-screen 10/width, 5/height
   # editor occupies only left half of screen
-  e:&:editor <- new-editor [abc], screen, 0/left, 5/right
+  e:&:editor <- new-editor [abc], 0/left, 5/right
   editor-render screen, e
   $clear-trace
   assume-console [
@@ -420,7 +420,7 @@ scenario editor-handles-mouse-clicks-outside-column [
 scenario editor-handles-mouse-clicks-in-menu-area [
   local-scope
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [abc], screen, 0/left, 5/right
+  e:&:editor <- new-editor [abc], 0/left, 5/right
   editor-render screen, e
   $clear-trace
   assume-console [
@@ -442,7 +442,7 @@ scenario editor-handles-mouse-clicks-in-menu-area [
 scenario editor-inserts-characters-into-empty-editor [
   local-scope
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [], screen, 0/left, 5/right
+  e:&:editor <- new-editor [], 0/left, 5/right
   editor-render screen, e
   $clear-trace
   assume-console [
@@ -463,7 +463,7 @@ scenario editor-inserts-characters-into-empty-editor [
 scenario editor-inserts-characters-at-cursor [
   local-scope
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [abc], screen, 0/left, 10/right
+  e:&:editor <- new-editor [abc], 0/left, 10/right
   editor-render screen, e
   $clear-trace
   # type two letters at different places
@@ -487,7 +487,7 @@ scenario editor-inserts-characters-at-cursor [
 scenario editor-inserts-characters-at-cursor-2 [
   local-scope
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [abc], screen, 0/left, 10/right
+  e:&:editor <- new-editor [abc], 0/left, 10/right
   editor-render screen, e
   $clear-trace
   assume-console [
@@ -511,7 +511,7 @@ scenario editor-inserts-characters-at-cursor-5 [
   assume-screen 10/width, 5/height
   s:text <- new [abc
 d]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   assume-console [
@@ -534,7 +534,7 @@ d]
 scenario editor-inserts-characters-at-cursor-3 [
   local-scope
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [abc], screen, 0/left, 10/right
+  e:&:editor <- new-editor [abc], 0/left, 10/right
   editor-render screen, e
   $clear-trace
   assume-console [
@@ -558,7 +558,7 @@ scenario editor-inserts-characters-at-cursor-4 [
   assume-screen 10/width, 5/height
   s:text <- new [abc
 d]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   assume-console [
@@ -583,7 +583,7 @@ scenario editor-inserts-characters-at-cursor-6 [
   assume-screen 10/width, 5/height
   s:text <- new [abc
 d]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   assume-console [
@@ -606,7 +606,7 @@ d]
 scenario editor-moves-cursor-after-inserting-characters [
   local-scope
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [ab], screen, 0/left, 5/right
+  e:&:editor <- new-editor [ab], 0/left, 5/right
   editor-render screen, e
   assume-console [
     type [01]
@@ -627,7 +627,7 @@ scenario editor-moves-cursor-after-inserting-characters [
 scenario editor-wraps-line-on-insert [
   local-scope
   assume-screen 5/width, 5/height
-  e:&:editor <- new-editor [abc], screen, 0/left, 5/right
+  e:&:editor <- new-editor [abc], 0/left, 5/right
   editor-render screen, e
   # type a letter
   assume-console [
@@ -667,7 +667,7 @@ scenario editor-wraps-line-on-insert-2 [
   assume-screen 10/width, 5/height
   s:text <- new [abcdefg
 defg]
-  e:&:editor <- new-editor s, screen, 0/left, 5/right
+  e:&:editor <- new-editor s, 0/left, 5/right
   editor-render screen, e
   # type more text at the start
   assume-console [
@@ -748,7 +748,7 @@ after <insert-character-special-case> [
 scenario editor-wraps-cursor-after-inserting-characters-in-middle-of-line [
   local-scope
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [abcde], screen, 0/left, 5/right
+  e:&:editor <- new-editor [abcde], 0/left, 5/right
   assume-console [
     left-click 1, 3  # right before the wrap icon
     type [f]
@@ -777,11 +777,13 @@ scenario editor-wraps-cursor-after-inserting-characters-at-end-of-line [
   # create an editor containing two lines
   s:text <- new [abc
 xyz]
-  e:&:editor <- new-editor s, screen, 0/left, 5/right
+  e:&:editor <- new-editor s, 0/left, 5/right
+  editor-render screen, e
   screen-should-contain [
     .          .
     .abc       .
     .xyz       .
+    .┈┈┈┈┈     .
     .          .
   ]
   assume-console [
@@ -803,7 +805,7 @@ xyz]
 scenario editor-wraps-cursor-to-left-margin [
   local-scope
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [abcde], screen, 2/left, 7/right
+  e:&:editor <- new-editor [abcde], 2/left, 7/right
   assume-console [
     left-click 1, 5  # line is full; no wrap icon yet
     type [01]
@@ -839,7 +841,7 @@ after <editor-initialization> [
 scenario editor-moves-cursor-down-after-inserting-newline [
   local-scope
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [abc], screen, 0/left, 10/right
+  e:&:editor <- new-editor [abc], 0/left, 10/right
   assume-console [
     type [0
 1]
@@ -945,7 +947,7 @@ def line-indent curr:&:duplex-list:char, start:&:duplex-list:char -> result:num
 scenario editor-moves-cursor-down-after-inserting-newline-2 [
   local-scope
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [abc], screen, 1/left, 10/right
+  e:&:editor <- new-editor [abc], 1/left, 10/right
   assume-console [
     type [0
 1]
@@ -965,16 +967,17 @@ scenario editor-moves-cursor-down-after-inserting-newline-2 [
 scenario editor-clears-previous-line-completely-after-inserting-newline [
   local-scope
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [abcde], screen, 0/left, 5/right
-  assume-console [
-    press enter
-  ]
+  e:&:editor <- new-editor [abcde], 0/left, 5/right
+  editor-render screen, e
   screen-should-contain [
     .          .
     .abcd↩     .
     .e         .
+    .┈┈┈┈┈     .
     .          .
-    .          .
+  ]
+  assume-console [
+    press enter
   ]
   run [
     editor-event-loop screen, console, e
@@ -995,7 +998,7 @@ scenario editor-inserts-indent-after-newline [
   s:text <- new [ab
   cd
 ef]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   # position cursor after 'cd' and hit 'newline'
   assume-console [
     left-click 2, 8
@@ -1020,7 +1023,7 @@ scenario editor-skips-indent-around-paste [
   s:text <- new [ab
   cd
 ef]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   # position cursor after 'cd' and hit 'newline' surrounded by paste markers
   assume-console [
     left-click 2, 8
diff --git a/edit/003-shortcuts.mu b/edit/003-shortcuts.mu
index 4c4caf38..27710ea8 100644
--- a/edit/003-shortcuts.mu
+++ b/edit/003-shortcuts.mu
@@ -10,7 +10,7 @@ scenario editor-inserts-two-spaces-on-tab [
   # just one character in final line
   s:text <- new [ab
 cd]
-  e:&:editor <- new-editor s, screen, 0/left, 5/right
+  e:&:editor <- new-editor s, 0/left, 5/right
   assume-console [
     press tab
   ]
@@ -42,7 +42,7 @@ after <handle-special-character> [
 scenario editor-handles-backspace-key [
   local-scope
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [abc], screen, 0/left, 10/right
+  e:&:editor <- new-editor [abc], 0/left, 10/right
   editor-render screen, e
   $clear-trace
   assume-console [
@@ -222,7 +222,7 @@ scenario editor-clears-last-line-on-backspace [
   # just one character in final line
   s:text <- new [ab
 cd]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   assume-console [
     left-click 2, 0  # cursor at only character in final line
     press backspace
@@ -250,7 +250,7 @@ scenario editor-joins-and-wraps-lines-on-backspace [
   # initialize editor with two long-ish but non-wrapping lines
   s:text <- new [abc def
 ghi jkl]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   # position the cursor at the start of the second and hit backspace
@@ -275,7 +275,7 @@ scenario editor-wraps-long-lines-on-backspace [
   local-scope
   assume-screen 10/width, 5/height
   # initialize editor in part of the screen with a long line
-  e:&:editor <- new-editor [abc def ghij], screen, 0/left, 8/right
+  e:&:editor <- new-editor [abc def ghij], 0/left, 8/right
   editor-render screen, e
   # confirm that it wraps
   screen-should-contain [
@@ -308,7 +308,7 @@ scenario editor-wraps-long-lines-on-backspace [
 scenario editor-handles-delete-key [
   local-scope
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [abc], screen, 0/left, 10/right
+  e:&:editor <- new-editor [abc], 0/left, 10/right
   editor-render screen, e
   $clear-trace
   assume-console [
@@ -397,7 +397,7 @@ def delete-at-cursor editor:&:editor, screen:&:screen -> editor:&:editor, screen
 scenario editor-moves-cursor-right-with-key [
   local-scope
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [abc], screen, 0/left, 10/right
+  e:&:editor <- new-editor [abc], 0/left, 10/right
   editor-render screen, e
   $clear-trace
   assume-console [
@@ -496,7 +496,7 @@ scenario editor-moves-cursor-to-next-line-with-right-arrow [
   assume-screen 10/width, 5/height
   s:text <- new [abc
 d]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   # type right-arrow a few times to get to start of second line
@@ -532,7 +532,7 @@ scenario editor-moves-cursor-to-next-line-with-right-arrow-2 [
   assume-screen 10/width, 5/height
   s:text <- new [abc
 d]
-  e:&:editor <- new-editor s, screen, 1/left, 10/right
+  e:&:editor <- new-editor s, 1/left, 10/right
   editor-render screen, e
   assume-console [
     press right-arrow
@@ -556,7 +556,7 @@ d]
 scenario editor-moves-cursor-to-next-wrapped-line-with-right-arrow [
   local-scope
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [abcdef], screen, 0/left, 5/right
+  e:&:editor <- new-editor [abcdef], 0/left, 5/right
   editor-render screen, e
   $clear-trace
   assume-console [
@@ -586,7 +586,7 @@ scenario editor-moves-cursor-to-next-wrapped-line-with-right-arrow-2 [
   local-scope
   assume-screen 10/width, 5/height
   # line just barely wrapping
-  e:&:editor <- new-editor [abcde], screen, 0/left, 5/right
+  e:&:editor <- new-editor [abcde], 0/left, 5/right
   editor-render screen, e
   $clear-trace
   # position cursor at last character before wrap and hit right-arrow
@@ -622,7 +622,7 @@ scenario editor-moves-cursor-to-next-wrapped-line-with-right-arrow-2 [
 scenario editor-moves-cursor-to-next-wrapped-line-with-right-arrow-3 [
   local-scope
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [abcdef], screen, 1/left, 6/right
+  e:&:editor <- new-editor [abcdef], 1/left, 6/right
   editor-render screen, e
   $clear-trace
   assume-console [
@@ -653,7 +653,7 @@ scenario editor-moves-cursor-to-next-line-with-right-arrow-at-end-of-line [
   assume-screen 10/width, 5/height
   s:text <- new [abc
 d]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   # move to end of line, press right-arrow, type a character
@@ -683,7 +683,7 @@ d]
 scenario editor-moves-cursor-left-with-key [
   local-scope
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [abc], screen, 0/left, 10/right
+  e:&:editor <- new-editor [abc], 0/left, 10/right
   editor-render screen, e
   $clear-trace
   assume-console [
@@ -728,7 +728,7 @@ scenario editor-moves-cursor-to-previous-line-with-left-arrow-at-start-of-line [
   # initialize editor with two lines
   s:text <- new [abc
 d]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   # position cursor at start of second line (so there's no previous newline)
@@ -755,7 +755,7 @@ scenario editor-moves-cursor-to-previous-line-with-left-arrow-at-start-of-line-2
   s:text <- new [abc
 def
 g]
-  e:&:editor <- new-editor s:text, screen, 0/left, 10/right
+  e:&:editor <- new-editor s:text, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   # position cursor further down (so there's a newline before the character at
@@ -784,7 +784,7 @@ scenario editor-moves-cursor-to-previous-line-with-left-arrow-at-start-of-line-3
   s:text <- new [abc
 def
 g]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   # position cursor at start of text, press left-arrow, then type a character
@@ -814,7 +814,7 @@ scenario editor-moves-cursor-to-previous-line-with-left-arrow-at-start-of-line-4
   s:text <- new [abc
 
 d]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e:&:editor
   $clear-trace
   # position cursor right after empty line
@@ -840,7 +840,7 @@ scenario editor-moves-across-screen-lines-across-wrap-with-left-arrow [
   local-scope
   assume-screen 10/width, 5/height
   # initialize editor with a wrapping line
-  e:&:editor <- new-editor [abcdef], screen, 0/left, 5/right
+  e:&:editor <- new-editor [abcdef], 0/left, 5/right
   editor-render screen, e
   $clear-trace
   screen-should-contain [
@@ -873,7 +873,7 @@ scenario editor-moves-across-screen-lines-to-wrapping-line-with-left-arrow [
   # initialize editor with a wrapping line followed by a second line
   s:text <- new [abcdef
 g]
-  e:&:editor <- new-editor s, screen, 0/left, 5/right
+  e:&:editor <- new-editor s, 0/left, 5/right
   editor-render screen, e
   $clear-trace
   screen-should-contain [
@@ -906,7 +906,7 @@ scenario editor-moves-across-screen-lines-to-non-wrapping-line-with-left-arrow [
   # initialize editor with a line on the verge of wrapping, followed by a second line
   s:text <- new [abcd
 e]
-  e:&:editor <- new-editor s, screen, 0/left, 5/right
+  e:&:editor <- new-editor s, 0/left, 5/right
   editor-render screen, e
   $clear-trace
   screen-should-contain [
@@ -942,7 +942,7 @@ scenario editor-moves-to-previous-line-with-up-arrow [
   assume-screen 10/width, 5/height
   s:text <- new [abc
 def]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   assume-console [
@@ -1059,7 +1059,7 @@ scenario editor-adjusts-column-at-previous-line [
   assume-screen 10/width, 5/height
   s:text <- new [ab
 def]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   assume-console [
@@ -1096,7 +1096,7 @@ scenario editor-adjusts-column-at-empty-line [
   assume-screen 10/width, 5/height
   s:text <- new [
 def]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   assume-console [
@@ -1135,7 +1135,7 @@ scenario editor-moves-to-previous-line-from-left-margin [
   s:text <- new [abc
 def
 ghi]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   # click on the third line and hit up-arrow, so you end up just after a newline
@@ -1175,7 +1175,7 @@ scenario editor-moves-to-next-line-with-down-arrow [
   assume-screen 10/width, 5/height
   s:text <- new [abc
 def]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   # cursor starts out at (1, 0)
@@ -1281,7 +1281,7 @@ scenario editor-adjusts-column-at-next-line [
   assume-screen 10/width, 5/height
   s:text <- new [abc
 de]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   assume-console [
@@ -1320,7 +1320,7 @@ scenario editor-moves-to-start-of-line-with-ctrl-a [
   assume-screen 10/width, 5/height
   s:text <- new [123
 456]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   # start on second line, press ctrl-a
@@ -1396,7 +1396,7 @@ scenario editor-moves-to-start-of-line-with-ctrl-a-2 [
   assume-screen 10/width, 5/height
   s:text <- new [123
 456]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   # start on first line (no newline before), press ctrl-a
@@ -1422,7 +1422,7 @@ scenario editor-moves-to-start-of-line-with-home [
   assume-screen 10/width, 5/height
   s:text <- new [123
 456]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   $clear-trace
   # start on second line, press 'home'
   assume-console [
@@ -1447,7 +1447,7 @@ scenario editor-moves-to-start-of-line-with-home-2 [
   assume-screen 10/width, 5/height
   s:text <- new [123
 456]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   # start on first line (no newline before), press 'home'
@@ -1475,7 +1475,7 @@ scenario editor-moves-to-end-of-line-with-ctrl-e [
   assume-screen 10/width, 5/height
   s:text <- new [123
 456]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   # start on first line, press ctrl-e
@@ -1568,7 +1568,7 @@ scenario editor-moves-to-end-of-line-with-ctrl-e-2 [
   assume-screen 10/width, 5/height
   s:text <- new [123
 456]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   # start on second line (no newline after), press ctrl-e
@@ -1594,7 +1594,7 @@ scenario editor-moves-to-end-of-line-with-end [
   assume-screen 10/width, 5/height
   s:text <- new [123
 456]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   # start on first line, press 'end'
@@ -1620,7 +1620,7 @@ scenario editor-moves-to-end-of-line-with-end-2 [
   assume-screen 10/width, 5/height
   s:text <- new [123
 456]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   # start on second line (no newline after), press 'end'
@@ -1648,7 +1648,7 @@ scenario editor-deletes-to-start-of-line-with-ctrl-u [
   assume-screen 10/width, 5/height
   s:text <- new [123
 456]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   # start on second line, press ctrl-u
   assume-console [
     left-click 2, 2
@@ -1712,7 +1712,7 @@ scenario editor-deletes-to-start-of-line-with-ctrl-u-2 [
   assume-screen 10/width, 5/height
   s:text <- new [123
 456]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   # start on first line (no newline before), press ctrl-u
   assume-console [
     left-click 1, 2
@@ -1736,7 +1736,7 @@ scenario editor-deletes-to-start-of-line-with-ctrl-u-3 [
   assume-screen 10/width, 5/height
   s:text <- new [123
 456]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   # start past end of line, press ctrl-u
   assume-console [
     left-click 1, 3
@@ -1760,7 +1760,7 @@ scenario editor-deletes-to-start-of-final-line-with-ctrl-u [
   assume-screen 10/width, 5/height
   s:text <- new [123
 456]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   # start past end of final line, press ctrl-u
   assume-console [
     left-click 2, 3
@@ -1786,7 +1786,7 @@ scenario editor-deletes-to-end-of-line-with-ctrl-k [
   assume-screen 10/width, 5/height
   s:text <- new [123
 456]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   # start on first line, press ctrl-k
   assume-console [
     left-click 1, 1
@@ -1842,7 +1842,7 @@ scenario editor-deletes-to-end-of-line-with-ctrl-k-2 [
   assume-screen 10/width, 5/height
   s:text <- new [123
 456]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   # start on second line (no newline after), press ctrl-k
   assume-console [
     left-click 2, 1
@@ -1866,7 +1866,7 @@ scenario editor-deletes-to-end-of-line-with-ctrl-k-3 [
   assume-screen 10/width, 5/height
   s:text <- new [123
 456]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   # start at end of line
   assume-console [
     left-click 1, 2
@@ -1890,7 +1890,7 @@ scenario editor-deletes-to-end-of-line-with-ctrl-k-4 [
   assume-screen 10/width, 5/height
   s:text <- new [123
 456]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   # start past end of line
   assume-console [
     left-click 1, 3
@@ -1914,7 +1914,7 @@ scenario editor-deletes-to-end-of-line-with-ctrl-k-5 [
   assume-screen 10/width, 5/height
   s:text <- new [123
 456]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   # start at end of text
   assume-console [
     left-click 2, 2
@@ -1938,7 +1938,7 @@ scenario editor-deletes-to-end-of-line-with-ctrl-k-6 [
   assume-screen 10/width, 5/height
   s:text <- new [123
 456]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   # start past end of text
   assume-console [
     left-click 2, 3
@@ -1968,7 +1968,8 @@ scenario editor-can-scroll-down-using-arrow-keys [
 b
 c
 d]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
+  editor-render screen, e
   screen-should-contain [
     .          .
     .a         .
@@ -2047,7 +2048,8 @@ scenario editor-scrolls-down-past-wrapped-line-using-arrow-keys [
 g
 h
 i]
-  e:&:editor <- new-editor s, screen, 0/left, 5/right
+  e:&:editor <- new-editor s, 0/left, 5/right
+  editor-render screen, e
   screen-should-contain [
     .          .
     .abcd↩     .
@@ -2080,7 +2082,7 @@ scenario editor-scrolls-down-past-wrapped-line-using-arrow-keys-2 [
 k
 l
 m]
-  e:&:editor <- new-editor s, screen, 0/left, 5/right
+  e:&:editor <- new-editor s, 0/left, 5/right
   # position cursor at last line, then try to move further down
   assume-console [
     left-click 3, 0
@@ -2120,7 +2122,7 @@ scenario editor-scrolls-down-when-line-wraps [
   s:text <- new [a
 b
 cdef]
-  e:&:editor <- new-editor s, screen, 0/left, 5/right
+  e:&:editor <- new-editor s, 0/left, 5/right
   # position cursor at end, type a character
   assume-console [
     left-click 3, 4
@@ -2151,7 +2153,7 @@ scenario editor-scrolls-down-on-newline [
   s:text <- new [a
 b
 c]
-  e:&:editor <- new-editor s, screen, 0/left, 5/right
+  e:&:editor <- new-editor s, 0/left, 5/right
   assume-console [
     left-click 3, 4
     type [
@@ -2183,7 +2185,7 @@ scenario editor-scrolls-down-on-right-arrow [
   s:text <- new [a
 b
 cdefgh]
-  e:&:editor <- new-editor s, screen, 0/left, 5/right
+  e:&:editor <- new-editor s, 0/left, 5/right
   # position cursor at end of screen and try to move right
   assume-console [
     left-click 3, 3
@@ -2216,7 +2218,7 @@ scenario editor-scrolls-down-on-right-arrow-2 [
 b
 c
 d]
-  e:&:editor <- new-editor s, screen, 0/left, 5/right
+  e:&:editor <- new-editor s, 0/left, 5/right
   # position cursor at end of screen and try to move right
   assume-console [
     left-click 3, 3
@@ -2245,7 +2247,7 @@ scenario editor-scrolls-at-end-on-down-arrow [
   assume-screen 10/width, 5/height
   s:text <- new [abc
 de]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   $clear-trace
   # try to move down past end of text
@@ -2318,7 +2320,8 @@ d
 e
 f
 g]
-  e:&:editor <- new-editor s, screen, 0/left, 5/right
+  e:&:editor <- new-editor s, 0/left, 5/right
+  editor-render screen, e
   # scroll down one page and one line
   assume-console [
     press page-down
@@ -2348,7 +2351,8 @@ scenario editor-can-scroll-up-using-arrow-keys [
 b
 c
 d]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
+  editor-render screen, e
   screen-should-contain [
     .          .
     .a         .
@@ -2437,7 +2441,8 @@ scenario editor-scrolls-up-past-wrapped-line-using-arrow-keys [
 g
 h
 i]
-  e:&:editor <- new-editor s, screen, 0/left, 5/right
+  e:&:editor <- new-editor s, 0/left, 5/right
+  editor-render screen, e
   screen-should-contain [
     .          .
     .abcd↩     .
@@ -2482,7 +2487,8 @@ scenario editor-scrolls-up-past-wrapped-line-using-arrow-keys-2 [
 k
 l
 m]
-  e:&:editor <- new-editor s, screen, 0/left, 5/right
+  e:&:editor <- new-editor s, 0/left, 5/right
+  editor-render screen, e
   # position cursor at top of second page
   assume-console [
     press page-down
@@ -2556,7 +2562,8 @@ scenario editor-scrolls-up-past-wrapped-line-using-arrow-keys-3 [
 g
 h
 i]
-  e:&:editor <- new-editor s, screen, 0/left, 6/right
+  e:&:editor <- new-editor s, 0/left, 6/right
+  editor-render screen, e
   screen-should-contain [
     .          .
     .abcde↩    .
@@ -2603,7 +2610,8 @@ b
 c
 d
 e]
-  e:&:editor <- new-editor s, screen, 0/left, 6/right
+  e:&:editor <- new-editor s, 0/left, 6/right
+  editor-render screen, e
   assume-console [
     press page-down
   ]
@@ -2652,7 +2660,8 @@ b
 c
 d
 e]
-  e:&:editor <- new-editor s, screen, 0/left, 5/right
+  e:&:editor <- new-editor s, 0/left, 5/right
+  editor-render screen, e
   # position cursor at top of second page
   assume-console [
     press page-down
@@ -2697,7 +2706,8 @@ scenario editor-can-scroll-up-to-start-of-file [
 b
 c
 d]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
+  editor-render screen, e
   screen-should-contain [
     .          .
     .a         .
@@ -2746,7 +2756,8 @@ scenario editor-can-scroll [
 b
 c
 d]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
+  editor-render screen, e
   screen-should-contain [
     .          .
     .a         .
@@ -2832,7 +2843,7 @@ scenario editor-does-not-scroll-past-end [
   assume-screen 10/width, 4/height
   s:text <- new [a
 b]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
   editor-render screen, e
   screen-should-contain [
     .          .
@@ -2865,7 +2876,8 @@ scenario editor-starts-next-page-at-start-of-wrapped-line [
 b
 cdefgh]
   # editor screen triggers wrap of last line
-  e:&:editor <- new-editor s, screen, 0/left, 4/right
+  e:&:editor <- new-editor s, 0/left, 4/right
+  editor-render screen, e
   # some part of last line is not displayed
   screen-should-contain [
     .          .
@@ -2897,7 +2909,8 @@ scenario editor-starts-next-page-at-start-of-wrapped-line-2 [
   # and still has something left over
   s:text <- new [a
 bcdefgh]
-  e:&:editor <- new-editor s, screen, 0/left, 4/right
+  e:&:editor <- new-editor s, 0/left, 4/right
+  editor-render screen, e
   # some part of last line is not displayed
   screen-should-contain [
     .          .
@@ -2930,7 +2943,8 @@ scenario editor-can-scroll-up [
 b
 c
 d]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
+  editor-render screen, e
   screen-should-contain [
     .          .
     .a         .
@@ -3031,7 +3045,8 @@ e
 f
 g
 h]
-  e:&:editor <- new-editor s, screen, 0/left, 10/right
+  e:&:editor <- new-editor s, 0/left, 10/right
+  editor-render screen, e
   screen-should-contain [
     .          .
     .a         .
@@ -3099,7 +3114,8 @@ m
 n
 o]
   # editor screen triggers wrap of last line
-  e:&:editor <- new-editor s, screen, 0/left, 4/right
+  e:&:editor <- new-editor s, 0/left, 4/right
+  editor-render screen, e
   # some part of last line is not displayed
   screen-should-contain [
     .          .
@@ -3153,7 +3169,8 @@ scenario editor-can-scroll-up-wrapped-lines-2 [
   # and still has something left over
   s:text <- new [a
 bcdefgh]
-  e:&:editor <- new-editor s, screen, 0/left, 4/right
+  e:&:editor <- new-editor s, 0/left, 4/right
+  editor-render screen, e
   # some part of last line is not displayed
   screen-should-contain [
     .          .
@@ -3204,7 +3221,8 @@ fxx
 gxx
 hxx
 ]
-  e:&:editor <- new-editor s, screen, 0/left, 4/right
+  e:&:editor <- new-editor s, 0/left, 4/right
+  editor-render screen, e
   screen-should-contain [
     .          .
     .axx       .
@@ -3263,7 +3281,8 @@ exy
 fxy
 gxy
 ]
-  e:&:editor <- new-editor s, screen, 0/left, 4/right
+  e:&:editor <- new-editor s, 0/left, 4/right
+  editor-render screen, e
   screen-should-contain [
     .          .
     .axy       .
diff --git a/edit/004-programming-environment.mu b/edit/004-programming-environment.mu
index 13969cf3..3e6d016a 100644
--- a/edit/004-programming-environment.mu
+++ b/edit/004-programming-environment.mu
@@ -38,10 +38,10 @@ def new-programming-environment screen:&:screen, initial-recipe-contents:text, i
   divider:num, _ <- divide-with-remainder width, 2
   draw-vertical screen, divider, 1/top, height, 9482/vertical-dotted
   # recipe editor on the left
-  recipes:&:editor <- new-editor initial-recipe-contents, screen, 0/left, divider/right
+  recipes:&:editor <- new-editor initial-recipe-contents, 0/left, divider/right
   # sandbox editor on the right
   sandbox-left:num <- add divider, 1
-  current-sandbox:&:editor <- new-editor initial-sandbox-contents, screen, sandbox-left, width/right
+  current-sandbox:&:editor <- new-editor initial-sandbox-contents, sandbox-left, width/right
   *result <- put *result, recipes:offset, recipes
   *result <- put *result, current-sandbox:offset, current-sandbox
   *result <- put *result, sandbox-in-focus?:offset, 0/false
diff --git a/edit/005-sandbox.mu b/edit/005-sandbox.mu
index 295e5ff1..0b1b82f1 100644
--- a/edit/005-sandbox.mu
+++ b/edit/005-sandbox.mu
@@ -621,7 +621,7 @@ def editor-contents editor:&:editor -> result:text [
 scenario editor-provides-edited-contents [
   local-scope
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [abc], screen, 0/left, 10/right
+  e:&:editor <- new-editor [abc], 0/left, 10/right
   assume-console [
     left-click 1, 2
     type [def]
diff --git a/edit/012-editor-undo.mu b/edit/012-editor-undo.mu
index d991b25f..ecc0707d 100644
--- a/edit/012-editor-undo.mu
+++ b/edit/012-editor-undo.mu
@@ -102,7 +102,7 @@ scenario editor-can-undo-typing [
   local-scope
   # create an editor and type a character
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [], screen, 0/left, 10/right
+  e:&:editor <- new-editor [], 0/left, 10/right
   editor-render screen, e
   assume-console [
     type [0]
@@ -232,7 +232,7 @@ scenario editor-can-undo-typing-multiple [
   local-scope
   # create an editor and type multiple characters
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [], screen, 0/left, 10/right
+  e:&:editor <- new-editor [], 0/left, 10/right
   editor-render screen, e
   assume-console [
     type [012]
@@ -258,7 +258,7 @@ scenario editor-can-undo-typing-multiple-2 [
   local-scope
   # create an editor with some text
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [a], screen, 0/left, 10/right
+  e:&:editor <- new-editor [a], 0/left, 10/right
   editor-render screen, e
   # type some characters
   assume-console [
@@ -304,7 +304,7 @@ scenario editor-can-undo-typing-enter [
   local-scope
   # create an editor with some text
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [  abc], screen, 0/left, 10/right
+  e:&:editor <- new-editor [  abc], 0/left, 10/right
   editor-render screen, e
   # new line
   assume-console [
@@ -367,7 +367,7 @@ scenario editor-redo-typing [
   local-scope
   # create an editor, type something, undo
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [a], screen, 0/left, 10/right
+  e:&:editor <- new-editor [a], 0/left, 10/right
   editor-render screen, e
   assume-console [
     type [012]
@@ -431,7 +431,7 @@ scenario editor-redo-typing-empty [
   local-scope
   # create an editor, type something, undo
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [], screen, 0/left, 10/right
+  e:&:editor <- new-editor [], 0/left, 10/right
   editor-render screen, e
   assume-console [
     type [012]
@@ -480,7 +480,7 @@ scenario editor-work-clears-redo-stack [
   contents:text <- new [abc
 def
 ghi]
-  e:&:editor <- new-editor contents, screen, 0/left, 10/right
+  e:&:editor <- new-editor contents, 0/left, 10/right
   editor-render screen, e
   assume-console [
     type [1]
@@ -520,7 +520,7 @@ scenario editor-can-redo-typing-and-enter-and-tab [
   local-scope
   # create an editor
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [], screen, 0/left, 10/right
+  e:&:editor <- new-editor [], 0/left, 10/right
   editor-render screen, e
   # insert some text and tabs, hit enter, some more text and tabs
   assume-console [
@@ -680,7 +680,7 @@ scenario editor-can-undo-touch [
   contents:text <- new [abc
 def
 ghi]
-  e:&:editor <- new-editor contents, screen, 0/left, 10/right
+  e:&:editor <- new-editor contents, 0/left, 10/right
   editor-render screen, e
   # move the cursor
   assume-console [
@@ -772,7 +772,7 @@ scenario editor-can-undo-scroll [
   contents:text <- new [a
 b
 cdefgh]
-  e:&:editor <- new-editor contents, screen, 0/left, 5/right
+  e:&:editor <- new-editor contents, 0/left, 5/right
   # position cursor at end of screen and try to move right
   assume-console [
     left-click 3, 3
@@ -835,7 +835,7 @@ scenario editor-can-undo-left-arrow [
   contents:text <- new [abc
 def
 ghi]
-  e:&:editor <- new-editor contents, screen, 0/left, 10/right
+  e:&:editor <- new-editor contents, 0/left, 10/right
   editor-render screen, e
   # move the cursor
   assume-console [
@@ -880,7 +880,7 @@ scenario editor-can-undo-up-arrow [
   contents:text <- new [abc
 def
 ghi]
-  e:&:editor <- new-editor contents, screen, 0/left, 10/right
+  e:&:editor <- new-editor contents, 0/left, 10/right
   editor-render screen, e
   # move the cursor
   assume-console [
@@ -931,7 +931,7 @@ scenario editor-can-undo-down-arrow [
   contents:text <- new [abc
 def
 ghi]
-  e:&:editor <- new-editor contents, screen, 0/left, 10/right
+  e:&:editor <- new-editor contents, 0/left, 10/right
   editor-render screen, e
   # move the cursor
   assume-console [
@@ -979,7 +979,7 @@ c
 d
 e
 f]
-  e:&:editor <- new-editor contents, screen, 0/left, 10/right
+  e:&:editor <- new-editor contents, 0/left, 10/right
   editor-render screen, e
   # scroll the page
   assume-console [
@@ -1013,7 +1013,7 @@ c
 d
 e
 f]
-  e:&:editor <- new-editor contents, screen, 0/left, 10/right
+  e:&:editor <- new-editor contents, 0/left, 10/right
   editor-render screen, e
   # scroll the page
   assume-console [
@@ -1047,7 +1047,7 @@ c
 d
 e
 f]
-  e:&:editor <- new-editor contents, screen, 0/left, 10/right
+  e:&:editor <- new-editor contents, 0/left, 10/right
   editor-render screen, e
   # scroll the page down and up
   assume-console [
@@ -1082,7 +1082,7 @@ c
 d
 e
 f]
-  e:&:editor <- new-editor contents, screen, 0/left, 10/right
+  e:&:editor <- new-editor contents, 0/left, 10/right
   editor-render screen, e
   # scroll the page down and up
   assume-console [
@@ -1114,7 +1114,7 @@ scenario editor-can-undo-ctrl-a [
   contents:text <- new [abc
 def
 ghi]
-  e:&:editor <- new-editor contents, screen, 0/left, 10/right
+  e:&:editor <- new-editor contents, 0/left, 10/right
   editor-render screen, e
   # move the cursor, then to start of line
   assume-console [
@@ -1159,7 +1159,7 @@ scenario editor-can-undo-home [
   contents:text <- new [abc
 def
 ghi]
-  e:&:editor <- new-editor contents, screen, 0/left, 10/right
+  e:&:editor <- new-editor contents, 0/left, 10/right
   editor-render screen, e
   # move the cursor, then to start of line
   assume-console [
@@ -1204,7 +1204,7 @@ scenario editor-can-undo-ctrl-e [
   contents:text <- new [abc
 def
 ghi]
-  e:&:editor <- new-editor contents, screen, 0/left, 10/right
+  e:&:editor <- new-editor contents, 0/left, 10/right
   editor-render screen, e
   # move the cursor, then to start of line
   assume-console [
@@ -1249,7 +1249,7 @@ scenario editor-can-undo-end [
   contents:text <- new [abc
 def
 ghi]
-  e:&:editor <- new-editor contents, screen, 0/left, 10/right
+  e:&:editor <- new-editor contents, 0/left, 10/right
   editor-render screen, e
   # move the cursor, then to start of line
   assume-console [
@@ -1294,7 +1294,7 @@ scenario editor-can-undo-multiple-arrows-in-the-same-direction [
   contents:text <- new [abc
 def
 ghi]
-  e:&:editor <- new-editor contents, screen, 0/left, 10/right
+  e:&:editor <- new-editor contents, 0/left, 10/right
   editor-render screen, e
   # move the cursor
   assume-console [
@@ -1349,7 +1349,7 @@ scenario editor-redo-touch [
   contents:text <- new [abc
 def
 ghi]
-  e:&:editor <- new-editor contents, screen, 0/left, 10/right
+  e:&:editor <- new-editor contents, 0/left, 10/right
   editor-render screen, e
   assume-console [
     left-click 3, 1
@@ -1404,7 +1404,7 @@ scenario editor-separates-undo-insert-from-undo-cursor-move [
   local-scope
   # create an editor, type some text, move the cursor, type some more text
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [], screen, 0/left, 10/right
+  e:&:editor <- new-editor [], 0/left, 10/right
   editor-render screen, e
   assume-console [
     type [abc]
@@ -1553,7 +1553,7 @@ scenario editor-can-undo-and-redo-backspace [
   local-scope
   # create an editor
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [], screen, 0/left, 10/right
+  e:&:editor <- new-editor [], 0/left, 10/right
   editor-render screen, e
   # insert some text and hit backspace
   assume-console [
@@ -1698,7 +1698,7 @@ scenario editor-can-undo-and-redo-delete [
   local-scope
   # create an editor
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [], screen, 0/left, 10/right
+  e:&:editor <- new-editor [], 0/left, 10/right
   editor-render screen, e
   # insert some text and hit delete and backspace a few times
   assume-console [
@@ -1889,7 +1889,7 @@ scenario editor-can-undo-and-redo-ctrl-k [
   assume-screen 10/width, 5/height
   contents:text <- new [abc
 def]
-  e:&:editor <- new-editor contents, screen, 0/left, 10/right
+  e:&:editor <- new-editor contents, 0/left, 10/right
   editor-render screen, e
   # insert some text and hit delete and backspace a few times
   assume-console [
@@ -1992,7 +1992,7 @@ scenario editor-can-undo-and-redo-ctrl-u [
   assume-screen 10/width, 5/height
   contents:text <- new [abc
 def]
-  e:&:editor <- new-editor contents, screen, 0/left, 10/right
+  e:&:editor <- new-editor contents, 0/left, 10/right
   editor-render screen, e
   # insert some text and hit delete and backspace a few times
   assume-console [
@@ -2092,7 +2092,7 @@ scenario editor-can-undo-and-redo-ctrl-u-2 [
   local-scope
   # create an editor
   assume-screen 10/width, 5/height
-  e:&:editor <- new-editor [], screen, 0/left, 10/right
+  e:&:editor <- new-editor [], 0/left, 10/right
   editor-render screen, e
   # insert some text and hit delete and backspace a few times
   assume-console [
diff --git a/html/edit/001-editor.mu.html b/html/edit/001-editor.mu.html
index ed370614..ae213b6b 100644
--- a/html/edit/001-editor.mu.html
+++ b/html/edit/001-editor.mu.html
@@ -42,17 +42,18 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Constant">load-ingredients</span>
   open-console
   hide-screen <span class="Constant">0/screen</span>
-  new-editor text, <span class="Constant">0/screen</span>, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  new-editor text, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   show-screen <span class="Constant">0/screen</span>
   wait-for-event <span class="Constant">0/console</span>
   close-console
 ]
 
-<span class="muScenario">scenario</span> editor-initially-prints-text-to-screen [
+<span class="muScenario">scenario</span> editor-renders-text-to-screen [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   run [
-    new-editor <span class="Constant">[abc]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+    render screen, e
   ]
   screen-should-contain [
     <span class="Comment"># top line of screen reserved for menu</span>
@@ -80,10 +81,9 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   cursor-column:num
 ]
 
-<span class="Comment"># creates a new editor widget and renders its initial appearance to screen</span>
-<span class="Comment">#   top/left/right constrain the screen area available to the new editor</span>
+<span class="Comment"># creates a new editor widget</span>
 <span class="Comment">#   right is exclusive</span>
-<span class="muRecipe">def</span> new-editor s:text, screen:&amp;:screen, left:num, right:num<span class="muRecipe"> -&gt; </span>result:&amp;:editor, screen:&amp;:screen [
+<span class="muRecipe">def</span> new-editor s:text, left:num, right:num<span class="muRecipe"> -&gt; </span>result:&amp;:editor [
   <span class="Constant">local-scope</span>
   <span class="Constant">load-ingredients</span>
   <span class="Comment"># no clipping of bounds</span>
@@ -101,8 +101,6 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   *result <span class="Special">&lt;-</span> put *result, <span class="Constant">top-of-screen:offset</span>, init
   *result <span class="Special">&lt;-</span> put *result, <span class="Constant">before-cursor:offset</span>, init
   result <span class="Special">&lt;-</span> insert-text result, s
-  <span class="Comment"># initial render to screen, just for some old tests</span>
-  _, _, screen, result <span class="Special">&lt;-</span> render screen, result
 <span class="Constant">  &lt;editor-initialization&gt;</span>
 ]
 
@@ -133,7 +131,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">5/width</span>, <span class="Constant">3/height</span>
   run [
-    e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">0/data</span>, screen, <span class="Constant">2/left</span>, <span class="Constant">5/right</span>
+    e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">0/data</span>, <span class="Constant">2/left</span>, <span class="Constant">5/right</span>
     2:editor/<span class="Special">raw</span> <span class="Special">&lt;-</span> copy *e
   ]
   memory-should-contain [
@@ -143,7 +141,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
     <span class="Comment"># 5 (before cursor) &lt;- the § sentinel</span>
    <span class="Constant"> 6</span> <span class="Special">&lt;-</span><span class="Constant"> 2</span>  <span class="Comment"># left</span>
    <span class="Constant"> 7</span> <span class="Special">&lt;-</span><span class="Constant"> 4</span>  <span class="Comment"># right  (inclusive)</span>
-   <span class="Constant"> 8</span> <span class="Special">&lt;-</span><span class="Constant"> 1</span>  <span class="Comment"># bottom</span>
+   <span class="Constant"> 8</span> <span class="Special">&lt;-</span><span class="Constant"> 0</span>  <span class="Comment"># bottom (not set until render)</span>
    <span class="Constant"> 9</span> <span class="Special">&lt;-</span><span class="Constant"> 1</span>  <span class="Comment"># cursor row</span>
    <span class="Constant"> 10</span> <span class="Special">&lt;-</span><span class="Constant"> 2</span>  <span class="Comment"># cursor column</span>
   ]
@@ -290,13 +288,14 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Delimiter">}</span>
 ]
 
-<span class="muScenario">scenario</span> editor-initially-prints-multiple-lines [
+<span class="muScenario">scenario</span> editor-prints-multiple-lines [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">5/width</span>, <span class="Constant">5/height</span>
-  run [
-    s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
+  s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">def]</span>
-    new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  run [
+    render screen, e
   ]
   screen-should-contain [
    <span class="Constant"> .     .</span>
@@ -306,12 +305,12 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   ]
 ]
 
-<span class="muScenario">scenario</span> editor-initially-handles-offsets [
+<span class="muScenario">scenario</span> editor-handles-offsets [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">5/width</span>, <span class="Constant">5/height</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, <span class="Constant">1/left</span>, <span class="Constant">5/right</span>
   run [
-    s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc]</span>
-    new-editor s, screen, <span class="Constant">1/left</span>, <span class="Constant">5/right</span>
+    render screen, e
   ]
   screen-should-contain [
    <span class="Constant"> .     .</span>
@@ -320,13 +319,14 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   ]
 ]
 
-<span class="muScenario">scenario</span> editor-initially-prints-multiple-lines-at-offset [
+<span class="muScenario">scenario</span> editor-prints-multiple-lines-at-offset [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">5/width</span>, <span class="Constant">5/height</span>
-  run [
-    s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
+  s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">def]</span>
-    new-editor s, screen, <span class="Constant">1/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">1/left</span>, <span class="Constant">5/right</span>
+  run [
+    render screen, e
   ]
   screen-should-contain [
    <span class="Constant"> .     .</span>
@@ -336,12 +336,12 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   ]
 ]
 
-<span class="muScenario">scenario</span> editor-initially-wraps-long-lines [
+<span class="muScenario">scenario</span> editor-wraps-long-lines [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">5/width</span>, <span class="Constant">5/height</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc def]</span>, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   run [
-    s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc def]</span>
-    new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+    render screen, e
   ]
   screen-should-contain [
    <span class="Constant"> .     .</span>
@@ -357,12 +357,12 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   ]
 ]
 
-<span class="muScenario">scenario</span> editor-initially-wraps-barely-long-lines [
+<span class="muScenario">scenario</span> editor-wraps-barely-long-lines [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">5/width</span>, <span class="Constant">5/height</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abcde]</span>, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   run [
-    s:text <span class="Special">&lt;-</span> new <span class="Constant">[abcde]</span>
-    new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+    render screen, e
   ]
   <span class="Comment"># still wrap, even though the line would fit. We need room to click on the</span>
   <span class="Comment"># end of the line</span>
@@ -380,11 +380,12 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   ]
 ]
 
-<span class="muScenario">scenario</span> editor-initializes-empty-text [
+<span class="muScenario">scenario</span> editor-with-empty-text [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">5/width</span>, <span class="Constant">5/height</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[]</span>, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   run [
-    e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+    render screen, e
     3:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-row:offset</span>
     4:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-column:offset</span>
   ]
@@ -404,11 +405,12 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> render-colors-comments [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">5/width</span>, <span class="Constant">5/height</span>
-  run [
-    s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
+  s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant"># de</span>
 <span class="Constant">f]</span>
-    new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  run [
+    render screen, e
   ]
   screen-should-contain [
    <span class="Constant"> .     .</span>
@@ -486,11 +488,12 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> render-colors-assignment [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">8/width</span>, <span class="Constant">5/height</span>
-  run [
-    s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
+  s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">d &lt;- e</span>
 <span class="Constant">f]</span>
-    new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">8/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">8/right</span>
+  run [
+    render screen, e
   ]
   screen-should-contain [
    <span class="Constant"> .        .</span>
diff --git a/html/edit/002-typing.mu.html b/html/edit/002-typing.mu.html
index dbca61b2..2c52331c 100644
--- a/html/edit/002-typing.mu.html
+++ b/html/edit/002-typing.mu.html
@@ -41,7 +41,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Constant">local-scope</span>
   <span class="Constant">load-ingredients</span>
   open-console
-  editor:&amp;:editor <span class="Special">&lt;-</span> new-editor text, <span class="Constant">0/screen</span>, <span class="Constant">5/left</span>, <span class="Constant">45/right</span>
+  editor:&amp;:editor <span class="Special">&lt;-</span> new-editor text, <span class="Constant">5/left</span>, <span class="Constant">45/right</span>
   editor-event-loop <span class="Constant">0/screen</span>, <span class="Constant">0/console</span>, editor
   close-console
 ]
@@ -318,7 +318,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> editor-handles-empty-event-queue [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   assume-console <span class="Constant">[]</span>
   run [
@@ -335,7 +335,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> editor-handles-mouse-clicks [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   assume-console [
@@ -362,7 +362,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> editor-handles-mouse-clicks-outside-text [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
 <span class="Constant">  $clear-trace</span>
   assume-console [
     left-click<span class="Constant"> 1</span>,<span class="Constant"> 7</span>  <span class="Comment"># last line, to the right of text</span>
@@ -384,7 +384,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">def]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
 <span class="Constant">  $clear-trace</span>
   assume-console [
     left-click<span class="Constant"> 1</span>,<span class="Constant"> 7</span>  <span class="Comment"># interior line, to the right of text</span>
@@ -406,7 +406,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">def]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
 <span class="Constant">  $clear-trace</span>
   assume-console [
     left-click<span class="Constant"> 3</span>,<span class="Constant"> 7</span>  <span class="Comment"># below text</span>
@@ -427,7 +427,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   <span class="Comment"># editor occupies only left half of screen</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   assume-console [
@@ -455,7 +455,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> editor-handles-mouse-clicks-in-menu-area [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   assume-console [
@@ -477,7 +477,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> editor-inserts-characters-into-empty-editor [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[]</span>, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   assume-console [
@@ -498,7 +498,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> editor-inserts-characters-at-cursor [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   <span class="Comment"># type two letters at different places</span>
@@ -522,7 +522,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> editor-inserts-characters-at-cursor-2 [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   assume-console [
@@ -546,7 +546,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">d]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   assume-console [
@@ -569,7 +569,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> editor-inserts-characters-at-cursor-3 [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   assume-console [
@@ -593,7 +593,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">d]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   assume-console [
@@ -618,7 +618,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">d]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   assume-console [
@@ -641,7 +641,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> editor-moves-cursor-after-inserting-characters [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[ab]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[ab]</span>, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   editor-render screen, e
   assume-console [
     type <span class="Constant">[01]</span>
@@ -662,7 +662,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> editor-wraps-line-on-insert [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">5/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   editor-render screen, e
   <span class="Comment"># type a letter</span>
   assume-console [
@@ -702,7 +702,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[abcdefg</span>
 <span class="Constant">defg]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   editor-render screen, e
   <span class="Comment"># type more text at the start</span>
   assume-console [
@@ -783,7 +783,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> editor-wraps-cursor-after-inserting-characters-in-middle-of-line [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abcde]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abcde]</span>, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   assume-console [
     left-click<span class="Constant"> 1</span>,<span class="Constant"> 3</span>  <span class="Comment"># right before the wrap icon</span>
     type <span class="Constant">[f]</span>
@@ -812,11 +812,13 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Comment"># create an editor containing two lines</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">xyz]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  editor-render screen, e
   screen-should-contain [
    <span class="Constant"> .          .</span>
    <span class="Constant"> .abc       .</span>
    <span class="Constant"> .xyz       .</span>
+   <span class="Constant"> .╌╌╌╌╌     .</span>
    <span class="Constant"> .          .</span>
   ]
   assume-console [
@@ -838,7 +840,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> editor-wraps-cursor-to-left-margin [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abcde]</span>, screen, <span class="Constant">2/left</span>, <span class="Constant">7/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abcde]</span>, <span class="Constant">2/left</span>, <span class="Constant">7/right</span>
   assume-console [
     left-click<span class="Constant"> 1</span>,<span class="Constant"> 5</span>  <span class="Comment"># line is full; no wrap icon yet</span>
     type <span class="Constant">[01]</span>
@@ -874,7 +876,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> editor-moves-cursor-down-after-inserting-newline [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   assume-console [
     type <span class="Constant">[0</span>
 <span class="Constant">1]</span>
@@ -980,7 +982,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> editor-moves-cursor-down-after-inserting-newline-2 [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, screen, <span class="Constant">1/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, <span class="Constant">1/left</span>, <span class="Constant">10/right</span>
   assume-console [
     type <span class="Constant">[0</span>
 <span class="Constant">1]</span>
@@ -1000,16 +1002,17 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> editor-clears-previous-line-completely-after-inserting-newline [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abcde]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
-  assume-console [
-    press enter
-  ]
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abcde]</span>, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  editor-render screen, e
   screen-should-contain [
    <span class="Constant"> .          .</span>
    <span class="Constant"> .abcd↩     .</span>
    <span class="Constant"> .e         .</span>
+   <span class="Constant"> .╌╌╌╌╌     .</span>
    <span class="Constant"> .          .</span>
-   <span class="Constant"> .          .</span>
+  ]
+  assume-console [
+    press enter
   ]
   run [
     editor-event-loop screen, console, e
@@ -1030,7 +1033,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[ab</span>
 <span class="Constant">  cd</span>
 <span class="Constant">ef]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   <span class="Comment"># position cursor after 'cd' and hit 'newline'</span>
   assume-console [
     left-click<span class="Constant"> 2</span>,<span class="Constant"> 8</span>
@@ -1055,7 +1058,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[ab</span>
 <span class="Constant">  cd</span>
 <span class="Constant">ef]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   <span class="Comment"># position cursor after 'cd' and hit 'newline' surrounded by paste markers</span>
   assume-console [
     left-click<span class="Constant"> 2</span>,<span class="Constant"> 8</span>
diff --git a/html/edit/003-shortcuts.mu.html b/html/edit/003-shortcuts.mu.html
index cc243281..3e248a6c 100644
--- a/html/edit/003-shortcuts.mu.html
+++ b/html/edit/003-shortcuts.mu.html
@@ -44,7 +44,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Comment"># just one character in final line</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[ab</span>
 <span class="Constant">cd]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   assume-console [
     press tab
   ]
@@ -76,7 +76,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> editor-handles-backspace-key [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   assume-console [
@@ -256,7 +256,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Comment"># just one character in final line</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[ab</span>
 <span class="Constant">cd]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   assume-console [
     left-click<span class="Constant"> 2</span>,<span class="Constant"> 0</span>  <span class="Comment"># cursor at only character in final line</span>
     press backspace
@@ -284,7 +284,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Comment"># initialize editor with two long-ish but non-wrapping lines</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc def</span>
 <span class="Constant">ghi jkl]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   <span class="Comment"># position the cursor at the start of the second and hit backspace</span>
@@ -309,7 +309,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   <span class="Comment"># initialize editor in part of the screen with a long line</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc def ghij]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">8/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc def ghij]</span>, <span class="Constant">0/left</span>, <span class="Constant">8/right</span>
   editor-render screen, e
   <span class="Comment"># confirm that it wraps</span>
   screen-should-contain [
@@ -342,7 +342,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> editor-handles-delete-key [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   assume-console [
@@ -431,7 +431,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> editor-moves-cursor-right-with-key [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   assume-console [
@@ -530,7 +530,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">d]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   <span class="Comment"># type right-arrow a few times to get to start of second line</span>
@@ -566,7 +566,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">d]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">1/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">1/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   assume-console [
     press right-arrow
@@ -590,7 +590,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> editor-moves-cursor-to-next-wrapped-line-with-right-arrow [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abcdef]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abcdef]</span>, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   assume-console [
@@ -620,7 +620,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   <span class="Comment"># line just barely wrapping</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abcde]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abcde]</span>, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   <span class="Comment"># position cursor at last character before wrap and hit right-arrow</span>
@@ -656,7 +656,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> editor-moves-cursor-to-next-wrapped-line-with-right-arrow-3 [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abcdef]</span>, screen, <span class="Constant">1/left</span>, <span class="Constant">6/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abcdef]</span>, <span class="Constant">1/left</span>, <span class="Constant">6/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   assume-console [
@@ -687,7 +687,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">d]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   <span class="Comment"># move to end of line, press right-arrow, type a character</span>
@@ -717,7 +717,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> editor-moves-cursor-left-with-key [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   assume-console [
@@ -762,7 +762,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Comment"># initialize editor with two lines</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">d]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   <span class="Comment"># position cursor at start of second line (so there's no previous newline)</span>
@@ -789,7 +789,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">def</span>
 <span class="Constant">g]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s:text, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s:text, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   <span class="Comment"># position cursor further down (so there's a newline before the character at</span>
@@ -818,7 +818,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">def</span>
 <span class="Constant">g]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   <span class="Comment"># position cursor at start of text, press left-arrow, then type a character</span>
@@ -848,7 +848,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 
 d]
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e:&amp;:editor
 <span class="Constant">  $clear-trace</span>
   <span class="Comment"># position cursor right after empty line</span>
@@ -874,7 +874,7 @@ d]
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   <span class="Comment"># initialize editor with a wrapping line</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abcdef]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abcdef]</span>, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   screen-should-contain [
@@ -907,7 +907,7 @@ d]
   <span class="Comment"># initialize editor with a wrapping line followed by a second line</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[abcdef</span>
 <span class="Constant">g]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   screen-should-contain [
@@ -940,7 +940,7 @@ d]
   <span class="Comment"># initialize editor with a line on the verge of wrapping, followed by a second line</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[abcd</span>
 <span class="Constant">e]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   screen-should-contain [
@@ -976,7 +976,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">def]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   assume-console [
@@ -1093,7 +1093,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[ab</span>
 <span class="Constant">def]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   assume-console [
@@ -1130,7 +1130,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new [
 <span class="muRecipe">def</span>]
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   assume-console [
@@ -1169,7 +1169,7 @@ d]
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">def</span>
 <span class="Constant">ghi]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   <span class="Comment"># click on the third line and hit up-arrow, so you end up just after a newline</span>
@@ -1209,7 +1209,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">def]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   <span class="Comment"># cursor starts out at (1, 0)</span>
@@ -1315,7 +1315,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">de]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   assume-console [
@@ -1354,7 +1354,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[123</span>
 <span class="Constant">456]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   <span class="Comment"># start on second line, press ctrl-a</span>
@@ -1430,7 +1430,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[123</span>
 <span class="Constant">456]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   <span class="Comment"># start on first line (no newline before), press ctrl-a</span>
@@ -1456,7 +1456,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[123</span>
 <span class="Constant">456]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
 <span class="Constant">  $clear-trace</span>
   <span class="Comment"># start on second line, press 'home'</span>
   assume-console [
@@ -1481,7 +1481,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[123</span>
 <span class="Constant">456]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   <span class="Comment"># start on first line (no newline before), press 'home'</span>
@@ -1509,7 +1509,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[123</span>
 <span class="Constant">456]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   <span class="Comment"># start on first line, press ctrl-e</span>
@@ -1602,7 +1602,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[123</span>
 <span class="Constant">456]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   <span class="Comment"># start on second line (no newline after), press ctrl-e</span>
@@ -1628,7 +1628,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[123</span>
 <span class="Constant">456]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   <span class="Comment"># start on first line, press 'end'</span>
@@ -1654,7 +1654,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[123</span>
 <span class="Constant">456]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   <span class="Comment"># start on second line (no newline after), press 'end'</span>
@@ -1682,7 +1682,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[123</span>
 <span class="Constant">456]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   <span class="Comment"># start on second line, press ctrl-u</span>
   assume-console [
     left-click<span class="Constant"> 2</span>,<span class="Constant"> 2</span>
@@ -1746,7 +1746,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[123</span>
 <span class="Constant">456]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   <span class="Comment"># start on first line (no newline before), press ctrl-u</span>
   assume-console [
     left-click<span class="Constant"> 1</span>,<span class="Constant"> 2</span>
@@ -1770,7 +1770,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[123</span>
 <span class="Constant">456]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   <span class="Comment"># start past end of line, press ctrl-u</span>
   assume-console [
     left-click<span class="Constant"> 1</span>,<span class="Constant"> 3</span>
@@ -1794,7 +1794,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[123</span>
 <span class="Constant">456]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   <span class="Comment"># start past end of final line, press ctrl-u</span>
   assume-console [
     left-click<span class="Constant"> 2</span>,<span class="Constant"> 3</span>
@@ -1820,7 +1820,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[123</span>
 <span class="Constant">456]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   <span class="Comment"># start on first line, press ctrl-k</span>
   assume-console [
     left-click<span class="Constant"> 1</span>,<span class="Constant"> 1</span>
@@ -1876,7 +1876,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[123</span>
 <span class="Constant">456]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   <span class="Comment"># start on second line (no newline after), press ctrl-k</span>
   assume-console [
     left-click<span class="Constant"> 2</span>,<span class="Constant"> 1</span>
@@ -1900,7 +1900,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[123</span>
 <span class="Constant">456]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   <span class="Comment"># start at end of line</span>
   assume-console [
     left-click<span class="Constant"> 1</span>,<span class="Constant"> 2</span>
@@ -1924,7 +1924,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[123</span>
 <span class="Constant">456]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   <span class="Comment"># start past end of line</span>
   assume-console [
     left-click<span class="Constant"> 1</span>,<span class="Constant"> 3</span>
@@ -1948,7 +1948,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[123</span>
 <span class="Constant">456]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   <span class="Comment"># start at end of text</span>
   assume-console [
     left-click<span class="Constant"> 2</span>,<span class="Constant"> 2</span>
@@ -1972,7 +1972,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[123</span>
 <span class="Constant">456]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   <span class="Comment"># start past end of text</span>
   assume-console [
     left-click<span class="Constant"> 2</span>,<span class="Constant"> 3</span>
@@ -2002,7 +2002,8 @@ d]
 <span class="Constant">b</span>
 <span class="Constant">c</span>
 <span class="Constant">d]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  editor-render screen, e
   screen-should-contain [
    <span class="Constant"> .          .</span>
    <span class="Constant"> .a         .</span>
@@ -2081,7 +2082,8 @@ d]
 <span class="Constant">g</span>
 <span class="Constant">h</span>
 <span class="Constant">i]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  editor-render screen, e
   screen-should-contain [
    <span class="Constant"> .          .</span>
    <span class="Constant"> .abcd↩     .</span>
@@ -2114,7 +2116,7 @@ d]
 <span class="Constant">k</span>
 <span class="Constant">l</span>
 <span class="Constant">m]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   <span class="Comment"># position cursor at last line, then try to move further down</span>
   assume-console [
     left-click<span class="Constant"> 3</span>,<span class="Constant"> 0</span>
@@ -2154,7 +2156,7 @@ d]
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[a</span>
 <span class="Constant">b</span>
 <span class="Constant">cdef]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   <span class="Comment"># position cursor at end, type a character</span>
   assume-console [
     left-click<span class="Constant"> 3</span>,<span class="Constant"> 4</span>
@@ -2185,7 +2187,7 @@ d]
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[a</span>
 <span class="Constant">b</span>
 <span class="Constant">c]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   assume-console [
     left-click<span class="Constant"> 3</span>,<span class="Constant"> 4</span>
     type [
@@ -2217,7 +2219,7 @@ d]
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[a</span>
 <span class="Constant">b</span>
 <span class="Constant">cdefgh]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   <span class="Comment"># position cursor at end of screen and try to move right</span>
   assume-console [
     left-click<span class="Constant"> 3</span>,<span class="Constant"> 3</span>
@@ -2250,7 +2252,7 @@ d]
 <span class="Constant">b</span>
 <span class="Constant">c</span>
 <span class="Constant">d]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   <span class="Comment"># position cursor at end of screen and try to move right</span>
   assume-console [
     left-click<span class="Constant"> 3</span>,<span class="Constant"> 3</span>
@@ -2279,7 +2281,7 @@ d]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">de]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
 <span class="Constant">  $clear-trace</span>
   <span class="Comment"># try to move down past end of text</span>
@@ -2352,7 +2354,8 @@ d]
 <span class="Constant">e</span>
 <span class="Constant">f</span>
 <span class="Constant">g]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  editor-render screen, e
   <span class="Comment"># scroll down one page and one line</span>
   assume-console [
     press page-down
@@ -2382,7 +2385,8 @@ d]
 <span class="Constant">b</span>
 <span class="Constant">c</span>
 <span class="Constant">d]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  editor-render screen, e
   screen-should-contain [
    <span class="Constant"> .          .</span>
    <span class="Constant"> .a         .</span>
@@ -2471,7 +2475,8 @@ d]
 <span class="Constant">g</span>
 <span class="Constant">h</span>
 <span class="Constant">i]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  editor-render screen, e
   screen-should-contain [
    <span class="Constant"> .          .</span>
    <span class="Constant"> .abcd↩     .</span>
@@ -2516,7 +2521,8 @@ d]
 <span class="Constant">k</span>
 <span class="Constant">l</span>
 <span class="Constant">m]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  editor-render screen, e
   <span class="Comment"># position cursor at top of second page</span>
   assume-console [
     press page-down
@@ -2590,7 +2596,8 @@ d]
 <span class="Constant">g</span>
 <span class="Constant">h</span>
 <span class="Constant">i]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">6/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">6/right</span>
+  editor-render screen, e
   screen-should-contain [
    <span class="Constant"> .          .</span>
    <span class="Constant"> .abcde↩    .</span>
@@ -2637,7 +2644,8 @@ d]
 c
 d
 e]
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">6/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">6/right</span>
+  editor-render screen, e
   assume-console [
     press page-down
   ]
@@ -2686,7 +2694,8 @@ e]
 <span class="Constant">c</span>
 <span class="Constant">d</span>
 <span class="Constant">e]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  editor-render screen, e
   <span class="Comment"># position cursor at top of second page</span>
   assume-console [
     press page-down
@@ -2731,7 +2740,8 @@ e]
 <span class="Constant">b</span>
 <span class="Constant">c</span>
 <span class="Constant">d]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  editor-render screen, e
   screen-should-contain [
    <span class="Constant"> .          .</span>
    <span class="Constant"> .a         .</span>
@@ -2780,7 +2790,8 @@ e]
 <span class="Constant">b</span>
 <span class="Constant">c</span>
 <span class="Constant">d]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  editor-render screen, e
   screen-should-contain [
    <span class="Constant"> .          .</span>
    <span class="Constant"> .a         .</span>
@@ -2866,7 +2877,7 @@ e]
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">4/height</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[a</span>
 <span class="Constant">b]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   screen-should-contain [
    <span class="Constant"> .          .</span>
@@ -2899,7 +2910,8 @@ e]
 <span class="Constant">b</span>
 <span class="Constant">cdefgh]</span>
   <span class="Comment"># editor screen triggers wrap of last line</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">4/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">4/right</span>
+  editor-render screen, e
   <span class="Comment"># some part of last line is not displayed</span>
   screen-should-contain [
    <span class="Constant"> .          .</span>
@@ -2931,7 +2943,8 @@ e]
   <span class="Comment"># and still has something left over</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[a</span>
 <span class="Constant">bcdefgh]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">4/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">4/right</span>
+  editor-render screen, e
   <span class="Comment"># some part of last line is not displayed</span>
   screen-should-contain [
    <span class="Constant"> .          .</span>
@@ -2964,7 +2977,8 @@ e]
 <span class="Constant">b</span>
 <span class="Constant">c</span>
 <span class="Constant">d]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  editor-render screen, e
   screen-should-contain [
    <span class="Constant"> .          .</span>
    <span class="Constant"> .a         .</span>
@@ -3065,7 +3079,8 @@ e]
 <span class="Constant">f</span>
 <span class="Constant">g</span>
 <span class="Constant">h]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  editor-render screen, e
   screen-should-contain [
    <span class="Constant"> .          .</span>
    <span class="Constant"> .a         .</span>
@@ -3133,7 +3148,8 @@ e]
 <span class="Constant">n</span>
 <span class="Constant">o]</span>
   <span class="Comment"># editor screen triggers wrap of last line</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">4/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">4/right</span>
+  editor-render screen, e
   <span class="Comment"># some part of last line is not displayed</span>
   screen-should-contain [
    <span class="Constant"> .          .</span>
@@ -3187,7 +3203,8 @@ e]
   <span class="Comment"># and still has something left over</span>
   s:text <span class="Special">&lt;-</span> new <span class="Constant">[a</span>
 <span class="Constant">bcdefgh]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">4/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">4/right</span>
+  editor-render screen, e
   <span class="Comment"># some part of last line is not displayed</span>
   screen-should-contain [
    <span class="Constant"> .          .</span>
@@ -3238,7 +3255,8 @@ e]
 <span class="Constant">gxx</span>
 <span class="Constant">hxx</span>
 <span class="Constant">]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">4/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">4/right</span>
+  editor-render screen, e
   screen-should-contain [
    <span class="Constant"> .          .</span>
    <span class="Constant"> .axx       .</span>
@@ -3297,7 +3315,8 @@ exy
 fxy
 gxy
 ]
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, screen, <span class="Constant">0/left</span>, <span class="Constant">4/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor s, <span class="Constant">0/left</span>, <span class="Constant">4/right</span>
+  editor-render screen, e
   screen-should-contain [
    <span class="Constant"> .          .</span>
    <span class="Constant"> .axy       .</span>
diff --git a/html/edit/004-programming-environment.mu.html b/html/edit/004-programming-environment.mu.html
index 9019e0d1..ed1bd4ad 100644
--- a/html/edit/004-programming-environment.mu.html
+++ b/html/edit/004-programming-environment.mu.html
@@ -73,10 +73,10 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   divider:num, _ <span class="Special">&lt;-</span> divide-with-remainder width,<span class="Constant"> 2</span>
   draw-vertical screen, divider, <span class="Constant">1/top</span>, height, <span class="Constant">9482/vertical-dotted</span>
   <span class="Comment"># recipe editor on the left</span>
-  recipes:&amp;:editor <span class="Special">&lt;-</span> new-editor initial-recipe-contents, screen, <span class="Constant">0/left</span>, divider/right
+  recipes:&amp;:editor <span class="Special">&lt;-</span> new-editor initial-recipe-contents, <span class="Constant">0/left</span>, divider/right
   <span class="Comment"># sandbox editor on the right</span>
   sandbox-left:num <span class="Special">&lt;-</span> add divider,<span class="Constant"> 1</span>
-  current-sandbox:&amp;:editor <span class="Special">&lt;-</span> new-editor initial-sandbox-contents, screen, sandbox-left, width/right
+  current-sandbox:&amp;:editor <span class="Special">&lt;-</span> new-editor initial-sandbox-contents, sandbox-left, width/right
   *result <span class="Special">&lt;-</span> put *result, <span class="Constant">recipes:offset</span>, recipes
   *result <span class="Special">&lt;-</span> put *result, <span class="Constant">current-sandbox:offset</span>, current-sandbox
   *result <span class="Special">&lt;-</span> put *result, <span class="Constant">sandbox-in-focus?:offset</span>, <span class="Constant">0/false</span>
diff --git a/html/edit/005-sandbox.mu.html b/html/edit/005-sandbox.mu.html
index 886ca9bc..b7afa986 100644
--- a/html/edit/005-sandbox.mu.html
+++ b/html/edit/005-sandbox.mu.html
@@ -656,7 +656,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="muScenario">scenario</span> editor-provides-edited-contents [
   <span class="Constant">local-scope</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   assume-console [
     left-click<span class="Constant"> 1</span>,<span class="Constant"> 2</span>
     type <span class="Constant">[def]</span>
diff --git a/html/edit/012-editor-undo.mu.html b/html/edit/012-editor-undo.mu.html
index 56b85dbf..7ff25219 100644
--- a/html/edit/012-editor-undo.mu.html
+++ b/html/edit/012-editor-undo.mu.html
@@ -137,7 +137,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Constant">local-scope</span>
   <span class="Comment"># create an editor and type a character</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   assume-console [
     type <span class="Constant">[0]</span>
@@ -267,7 +267,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Constant">local-scope</span>
   <span class="Comment"># create an editor and type multiple characters</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   assume-console [
     type <span class="Constant">[012]</span>
@@ -293,7 +293,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Constant">local-scope</span>
   <span class="Comment"># create an editor with some text</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[a]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[a]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   <span class="Comment"># type some characters</span>
   assume-console [
@@ -339,7 +339,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Constant">local-scope</span>
   <span class="Comment"># create an editor with some text</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[  abc]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[  abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   <span class="Comment"># new line</span>
   assume-console [
@@ -402,7 +402,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Constant">local-scope</span>
   <span class="Comment"># create an editor, type something, undo</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[a]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[a]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   assume-console [
     type <span class="Constant">[012]</span>
@@ -466,7 +466,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Constant">local-scope</span>
   <span class="Comment"># create an editor, type something, undo</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   assume-console [
     type <span class="Constant">[012]</span>
@@ -515,7 +515,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   contents:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">def</span>
 <span class="Constant">ghi]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   assume-console [
     type <span class="Constant">[1]</span>
@@ -555,7 +555,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Constant">local-scope</span>
   <span class="Comment"># create an editor</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   <span class="Comment"># insert some text and tabs, hit enter, some more text and tabs</span>
   assume-console [
@@ -715,7 +715,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   contents:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">def</span>
 <span class="Constant">ghi]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   <span class="Comment"># move the cursor</span>
   assume-console [
@@ -807,7 +807,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   contents:text <span class="Special">&lt;-</span> new <span class="Constant">[a</span>
 <span class="Constant">b</span>
 <span class="Constant">cdefgh]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, screen, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
   <span class="Comment"># position cursor at end of screen and try to move right</span>
   assume-console [
     left-click<span class="Constant"> 3</span>,<span class="Constant"> 3</span>
@@ -870,7 +870,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   contents:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">def</span>
 <span class="Constant">ghi]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   <span class="Comment"># move the cursor</span>
   assume-console [
@@ -915,7 +915,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   contents:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">def</span>
 <span class="Constant">ghi]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   <span class="Comment"># move the cursor</span>
   assume-console [
@@ -966,7 +966,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   contents:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">def</span>
 <span class="Constant">ghi]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   <span class="Comment"># move the cursor</span>
   assume-console [
@@ -1014,7 +1014,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="Constant">d</span>
 <span class="Constant">e</span>
 <span class="Constant">f]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   <span class="Comment"># scroll the page</span>
   assume-console [
@@ -1048,7 +1048,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="Constant">d</span>
 <span class="Constant">e</span>
 <span class="Constant">f]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   <span class="Comment"># scroll the page</span>
   assume-console [
@@ -1082,7 +1082,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="Constant">d</span>
 <span class="Constant">e</span>
 <span class="Constant">f]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   <span class="Comment"># scroll the page down and up</span>
   assume-console [
@@ -1117,7 +1117,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
 <span class="Constant">d</span>
 <span class="Constant">e</span>
 <span class="Constant">f]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   <span class="Comment"># scroll the page down and up</span>
   assume-console [
@@ -1149,7 +1149,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   contents:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">def</span>
 <span class="Constant">ghi]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   <span class="Comment"># move the cursor, then to start of line</span>
   assume-console [
@@ -1194,7 +1194,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   contents:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">def</span>
 <span class="Constant">ghi]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   <span class="Comment"># move the cursor, then to start of line</span>
   assume-console [
@@ -1239,7 +1239,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   contents:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">def</span>
 <span class="Constant">ghi]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   <span class="Comment"># move the cursor, then to start of line</span>
   assume-console [
@@ -1284,7 +1284,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   contents:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">def</span>
 <span class="Constant">ghi]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   <span class="Comment"># move the cursor, then to start of line</span>
   assume-console [
@@ -1329,7 +1329,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   contents:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">def</span>
 <span class="Constant">ghi]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   <span class="Comment"># move the cursor</span>
   assume-console [
@@ -1384,7 +1384,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   contents:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">def</span>
 <span class="Constant">ghi]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   assume-console [
     left-click<span class="Constant"> 3</span>,<span class="Constant"> 1</span>
@@ -1439,7 +1439,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Constant">local-scope</span>
   <span class="Comment"># create an editor, type some text, move the cursor, type some more text</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   assume-console [
     type <span class="Constant">[abc]</span>
@@ -1588,7 +1588,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Constant">local-scope</span>
   <span class="Comment"># create an editor</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   <span class="Comment"># insert some text and hit backspace</span>
   assume-console [
@@ -1733,7 +1733,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Constant">local-scope</span>
   <span class="Comment"># create an editor</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   <span class="Comment"># insert some text and hit delete and backspace a few times</span>
   assume-console [
@@ -1924,7 +1924,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   contents:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">def]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   <span class="Comment"># insert some text and hit delete and backspace a few times</span>
   assume-console [
@@ -2027,7 +2027,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
   contents:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span class="Constant">def]</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor contents, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   <span class="Comment"># insert some text and hit delete and backspace a few times</span>
   assume-console [
@@ -2127,7 +2127,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color
   <span class="Constant">local-scope</span>
   <span class="Comment"># create an editor</span>
   assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
-  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[]</span>, screen, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
+  e:&amp;:editor <span class="Special">&lt;-</span> new-editor <span class="Constant">[]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
   editor-render screen, e
   <span class="Comment"># insert some text and hit delete and backspace a few times</span>
   assume-console [