about summary refs log tree commit diff stats
path: root/html/edit/002-typing.mu.html
diff options
context:
space:
mode:
Diffstat (limited to 'html/edit/002-typing.mu.html')
-rw-r--r--html/edit/002-typing.mu.html170
1 files changed, 85 insertions, 85 deletions
diff --git a/html/edit/002-typing.mu.html b/html/edit/002-typing.mu.html
index f619f5a3..3cbe84ba 100644
--- a/html/edit/002-typing.mu.html
+++ b/html/edit/002-typing.mu.html
@@ -69,14 +69,14 @@ if ('onhashchange' in window) {
 <span id="L6" class="LineNr">   6 </span>  <span class="Constant">local-scope</span>
 <span id="L7" class="LineNr">   7 </span>  <span class="Constant">load-ingredients</span>
 <span id="L8" class="LineNr">   8 </span>  open-console
-<span id="L9" class="LineNr">   9 </span>  <a href='../081print.mu.html#L33'>clear-screen</a> <span class="Constant">0/screen</span>  <span class="Comment"># non-scrolling app</span>
+<span id="L9" class="LineNr">   9 </span>  <a href='../081print.mu.html#L46'>clear-screen</a> <span class="Constant">0/screen</span>  <span class="Comment"># non-scrolling app</span>
 <span id="L10" class="LineNr">  10 </span>  editor:&amp;:editor <span class="Special">&lt;-</span> <a href='001-editor.mu.html#L51'>new-editor</a> text, <span class="Constant">5/left</span>, <span class="Constant">45/right</span>
 <span id="L11" class="LineNr">  11 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <span class="Constant">0/screen</span>, editor
 <span id="L12" class="LineNr">  12 </span>  <a href='002-typing.mu.html#L16'>editor-event-loop</a> <span class="Constant">0/screen</span>, <span class="Constant">0/console</span>, editor
 <span id="L13" class="LineNr">  13 </span>  close-console
 <span id="L14" class="LineNr">  14 </span>]
 <span id="L15" class="LineNr">  15 </span>
-<span id="L16" class="LineNr">  16 </span><span class="muRecipe">def</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>:&amp;:<a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>:&amp;:<a href='../084console.mu.html#L23'>console</a>, editor:&amp;:editor<span class="muRecipe"> -&gt; </span><a href='../081print.mu.html#L4'>screen</a>:&amp;:<a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>:&amp;:<a href='../084console.mu.html#L23'>console</a>, editor:&amp;:editor [
+<span id="L16" class="LineNr">  16 </span><span class="muRecipe">def</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>:&amp;:<a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>:&amp;:<a href='../084console.mu.html#L23'>console</a>, editor:&amp;:editor<span class="muRecipe"> -&gt; </span><a href='../081print.mu.html#L16'>screen</a>:&amp;:<a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>:&amp;:<a href='../084console.mu.html#L23'>console</a>, editor:&amp;:editor [
 <span id="L17" class="LineNr">  17 </span>  <span class="Constant">local-scope</span>
 <span id="L18" class="LineNr">  18 </span>  <span class="Constant">load-ingredients</span>
 <span id="L19" class="LineNr">  19 </span>  <span class="Delimiter">{</span>
@@ -84,7 +84,7 @@ if ('onhashchange' in window) {
 <span id="L21" class="LineNr">  21 </span><span class="Constant">  </span><span class="Conceal">¦</span><span class="Constant"> +next-event</span>
 <span id="L22" class="LineNr">  22 </span>  <span class="Conceal">¦</span> cursor-row:num <span class="Special">&lt;-</span> get *editor, <span class="Constant">cursor-row:offset</span>
 <span id="L23" class="LineNr">  23 </span>  <span class="Conceal">¦</span> cursor-column:num <span class="Special">&lt;-</span> get *editor, <span class="Constant">cursor-column:offset</span>
-<span id="L24" class="LineNr">  24 </span>  <span class="Conceal">¦</span> <a href='../081print.mu.html#L4'>screen</a> <span class="Special">&lt;-</span> move-cursor <a href='../081print.mu.html#L4'>screen</a>, cursor-row, cursor-column
+<span id="L24" class="LineNr">  24 </span>  <span class="Conceal">¦</span> <a href='../081print.mu.html#L16'>screen</a> <span class="Special">&lt;-</span> move-cursor <a href='../081print.mu.html#L16'>screen</a>, cursor-row, cursor-column
 <span id="L25" class="LineNr">  25 </span>  <span class="Conceal">¦</span> e:<a href='../084console.mu.html#L4'>event</a>, found?:bool, quit?:bool, <a href='../084console.mu.html#L23'>console</a> <span class="Special">&lt;-</span> <a href='../084console.mu.html#L35'>read-event</a> <a href='../084console.mu.html#L23'>console</a>
 <span id="L26" class="LineNr">  26 </span>  <span class="Conceal">¦</span> <span class="muControl">loop-unless</span> found?
 <span id="L27" class="LineNr">  27 </span>  <span class="Conceal">¦</span> <span class="muControl">break-if</span> quit?  <span class="Comment"># only in tests</span>
@@ -93,16 +93,16 @@ if ('onhashchange' in window) {
 <span id="L30" class="LineNr">  30 </span>  <span class="Conceal">¦</span> t:<a href='../084console.mu.html#L12'>touch-event</a>, is-touch?:bool <span class="Special">&lt;-</span> maybe-convert e, <span class="Constant">touch:variant</span>
 <span id="L31" class="LineNr">  31 </span>  <span class="Conceal">¦</span> <span class="Delimiter">{</span>
 <span id="L32" class="LineNr">  32 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> is-touch?
-<span id="L33" class="LineNr">  33 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> move-cursor editor, <a href='../081print.mu.html#L4'>screen</a>, t
+<span id="L33" class="LineNr">  33 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> move-cursor editor, <a href='../081print.mu.html#L16'>screen</a>, t
 <span id="L34" class="LineNr">  34 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span class="Constant">+next-event</span>
 <span id="L35" class="LineNr">  35 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L36" class="LineNr">  36 </span>  <span class="Conceal">¦</span> <span class="Comment"># keyboard events</span>
 <span id="L37" class="LineNr">  37 </span>  <span class="Conceal">¦</span> <span class="Delimiter">{</span>
 <span id="L38" class="LineNr">  38 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> is-touch?
-<span id="L39" class="LineNr">  39 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> go-render?:bool <span class="Special">&lt;-</span> <a href='002-typing.mu.html#L166'>handle-keyboard-event</a> <a href='../081print.mu.html#L4'>screen</a>, editor, e
+<span id="L39" class="LineNr">  39 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> go-render?:bool <span class="Special">&lt;-</span> <a href='002-typing.mu.html#L166'>handle-keyboard-event</a> <a href='../081print.mu.html#L16'>screen</a>, editor, e
 <span id="L40" class="LineNr">  40 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">{</span>
 <span id="L41" class="LineNr">  41 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> go-render?
-<span id="L42" class="LineNr">  42 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='../081print.mu.html#L4'>screen</a> <span class="Special">&lt;-</span> <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L4'>screen</a>, editor
+<span id="L42" class="LineNr">  42 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='../081print.mu.html#L16'>screen</a> <span class="Special">&lt;-</span> <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L16'>screen</a>, editor
 <span id="L43" class="LineNr">  43 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L44" class="LineNr">  44 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
 <span id="L45" class="LineNr">  45 </span>  <span class="Conceal">¦</span> <span class="muControl">loop</span>
@@ -110,7 +110,7 @@ if ('onhashchange' in window) {
 <span id="L47" class="LineNr">  47 </span>]
 <span id="L48" class="LineNr">  48 </span>
 <span id="L49" class="LineNr">  49 </span><span class="Comment"># process click, return if it was on current editor</span>
-<span id="L50" class="LineNr">  50 </span><span class="muRecipe">def</span> move-cursor editor:&amp;:editor, <a href='../081print.mu.html#L4'>screen</a>:&amp;:<a href='../081print.mu.html#L4'>screen</a>, t:<a href='../084console.mu.html#L12'>touch-event</a><span class="muRecipe"> -&gt; </span>in-focus?:bool, editor:&amp;:editor [
+<span id="L50" class="LineNr">  50 </span><span class="muRecipe">def</span> move-cursor editor:&amp;:editor, <a href='../081print.mu.html#L16'>screen</a>:&amp;:<a href='../081print.mu.html#L16'>screen</a>, t:<a href='../084console.mu.html#L12'>touch-event</a><span class="muRecipe"> -&gt; </span>in-focus?:bool, editor:&amp;:editor [
 <span id="L51" class="LineNr">  51 </span>  <span class="Constant">local-scope</span>
 <span id="L52" class="LineNr">  52 </span>  <span class="Constant">load-ingredients</span>
 <span id="L53" class="LineNr">  53 </span>  <span class="muControl">return-unless</span> editor, <span class="Constant">0/false</span>
@@ -125,7 +125,7 @@ if ('onhashchange' in window) {
 <span id="L62" class="LineNr">  62 </span>  <span class="muControl">return-if</span> too-far-right?, <span class="Constant">0/false</span>
 <span id="L63" class="LineNr">  63 </span>  <span class="Comment"># position cursor</span>
 <span id="L64" class="LineNr">  64 </span><span class="Constant">  &lt;move-cursor-begin&gt;</span>
-<span id="L65" class="LineNr">  65 </span>  editor <span class="Special">&lt;-</span> <a href='002-typing.mu.html#L75'>snap-cursor</a> editor, <a href='../081print.mu.html#L4'>screen</a>, click-row, click-column
+<span id="L65" class="LineNr">  65 </span>  editor <span class="Special">&lt;-</span> <a href='002-typing.mu.html#L75'>snap-cursor</a> editor, <a href='../081print.mu.html#L16'>screen</a>, click-row, click-column
 <span id="L66" class="LineNr">  66 </span>  undo-coalesce-tag:num <span class="Special">&lt;-</span> copy <span class="Constant">0/never</span>
 <span id="L67" class="LineNr">  67 </span><span class="Constant">  &lt;move-cursor-end&gt;</span>
 <span id="L68" class="LineNr">  68 </span>  <span class="Comment"># gain focus</span>
@@ -135,13 +135,13 @@ if ('onhashchange' in window) {
 <span id="L72" class="LineNr">  72 </span><span class="Comment"># Variant of 'render' that only moves the cursor (coordinates and</span>
 <span id="L73" class="LineNr">  73 </span><span class="Comment"># before-cursor). If it's past the end of a line, it 'slides' it left. If it's</span>
 <span id="L74" class="LineNr">  74 </span><span class="Comment"># past the last line it positions at end of last line.</span>
-<span id="L75" class="LineNr">  75 </span><span class="muRecipe">def</span> <a href='002-typing.mu.html#L75'>snap-cursor</a> editor:&amp;:editor, <a href='../081print.mu.html#L4'>screen</a>:&amp;:<a href='../081print.mu.html#L4'>screen</a>, target-row:num, target-column:num<span class="muRecipe"> -&gt; </span>editor:&amp;:editor [
+<span id="L75" class="LineNr">  75 </span><span class="muRecipe">def</span> <a href='002-typing.mu.html#L75'>snap-cursor</a> editor:&amp;:editor, <a href='../081print.mu.html#L16'>screen</a>:&amp;:<a href='../081print.mu.html#L16'>screen</a>, target-row:num, target-column:num<span class="muRecipe"> -&gt; </span>editor:&amp;:editor [
 <span id="L76" class="LineNr">  76 </span>  <span class="Constant">local-scope</span>
 <span id="L77" class="LineNr">  77 </span>  <span class="Constant">load-ingredients</span>
 <span id="L78" class="LineNr">  78 </span>  <span class="muControl">return-unless</span> editor
 <span id="L79" class="LineNr">  79 </span>  left:num <span class="Special">&lt;-</span> get *editor, <span class="Constant">left:offset</span>
 <span id="L80" class="LineNr">  80 </span>  right:num <span class="Special">&lt;-</span> get *editor, <span class="Constant">right:offset</span>
-<span id="L81" class="LineNr">  81 </span>  <a href='../081print.mu.html#L748'>screen-height</a>:num <span class="Special">&lt;-</span> <a href='../081print.mu.html#L748'>screen-height</a> <a href='../081print.mu.html#L4'>screen</a>
+<span id="L81" class="LineNr">  81 </span>  <a href='../081print.mu.html#L782'>screen-height</a>:num <span class="Special">&lt;-</span> <a href='../081print.mu.html#L782'>screen-height</a> <a href='../081print.mu.html#L16'>screen</a>
 <span id="L82" class="LineNr">  82 </span>  <span class="Comment"># count newlines until screen row</span>
 <span id="L83" class="LineNr">  83 </span>  curr:&amp;:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special">&lt;-</span> get *editor, <span class="Constant">top-of-screen:offset</span>
 <span id="L84" class="LineNr">  84 </span>  <a href='../065duplex_list.mu.html#L36'>prev</a>:&amp;:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special">&lt;-</span> copy curr  <span class="Comment"># just in case curr becomes null and we can't compute prev</span>
@@ -156,7 +156,7 @@ if ('onhashchange' in window) {
 <span id="L93" class="LineNr">  93 </span>  <span class="Delimiter">{</span>
 <span id="L94" class="LineNr">  94 </span><span class="Constant">  </span><span class="Conceal">¦</span><span class="Constant"> +next-character</span>
 <span id="L95" class="LineNr">  95 </span>  <span class="Conceal">¦</span> <span class="muControl">break-unless</span> curr
-<span id="L96" class="LineNr">  96 </span>  <span class="Conceal">¦</span> off-screen?:bool <span class="Special">&lt;-</span> greater-or-equal row, <a href='../081print.mu.html#L748'>screen-height</a>
+<span id="L96" class="LineNr">  96 </span>  <span class="Conceal">¦</span> off-screen?:bool <span class="Special">&lt;-</span> greater-or-equal row, <a href='../081print.mu.html#L782'>screen-height</a>
 <span id="L97" class="LineNr">  97 </span>  <span class="Conceal">¦</span> <span class="muControl">break-if</span> off-screen?
 <span id="L98" class="LineNr">  98 </span>  <span class="Conceal">¦</span> <span class="Comment"># update editor.before-cursor</span>
 <span id="L99" class="LineNr">  99 </span>  <span class="Conceal">¦</span> <span class="Comment"># Doing so at the start of each iteration ensures it stays one step behind</span>
@@ -226,12 +226,12 @@ if ('onhashchange' in window) {
 <span id="L163" class="LineNr"> 163 </span>
 <span id="L164" class="LineNr"> 164 </span><span class="Comment"># Process an event 'e' and try to minimally update the screen.</span>
 <span id="L165" class="LineNr"> 165 </span><span class="Comment"># Set 'go-render?' to true to indicate the caller must perform a non-minimal update.</span>
-<span id="L166" class="LineNr"> 166 </span><span class="muRecipe">def</span> <a href='002-typing.mu.html#L166'>handle-keyboard-event</a> <a href='../081print.mu.html#L4'>screen</a>:&amp;:<a href='../081print.mu.html#L4'>screen</a>, editor:&amp;:editor, e:<a href='../084console.mu.html#L4'>event</a><span class="muRecipe"> -&gt; </span>go-render?:bool, <a href='../081print.mu.html#L4'>screen</a>:&amp;:<a href='../081print.mu.html#L4'>screen</a>, editor:&amp;:editor [
+<span id="L166" class="LineNr"> 166 </span><span class="muRecipe">def</span> <a href='002-typing.mu.html#L166'>handle-keyboard-event</a> <a href='../081print.mu.html#L16'>screen</a>:&amp;:<a href='../081print.mu.html#L16'>screen</a>, editor:&amp;:editor, e:<a href='../084console.mu.html#L4'>event</a><span class="muRecipe"> -&gt; </span>go-render?:bool, <a href='../081print.mu.html#L16'>screen</a>:&amp;:<a href='../081print.mu.html#L16'>screen</a>, editor:&amp;:editor [
 <span id="L167" class="LineNr"> 167 </span>  <span class="Constant">local-scope</span>
 <span id="L168" class="LineNr"> 168 </span>  <span class="Constant">load-ingredients</span>
 <span id="L169" class="LineNr"> 169 </span>  <span class="muControl">return-unless</span> editor, <span class="Constant">0/don't-render</span>
-<span id="L170" class="LineNr"> 170 </span>  <a href='../081print.mu.html#L735'>screen-width</a>:num <span class="Special">&lt;-</span> <a href='../081print.mu.html#L735'>screen-width</a> <a href='../081print.mu.html#L4'>screen</a>
-<span id="L171" class="LineNr"> 171 </span>  <a href='../081print.mu.html#L748'>screen-height</a>:num <span class="Special">&lt;-</span> <a href='../081print.mu.html#L748'>screen-height</a> <a href='../081print.mu.html#L4'>screen</a>
+<span id="L170" class="LineNr"> 170 </span>  <a href='../081print.mu.html#L768'>screen-width</a>:num <span class="Special">&lt;-</span> <a href='../081print.mu.html#L768'>screen-width</a> <a href='../081print.mu.html#L16'>screen</a>
+<span id="L171" class="LineNr"> 171 </span>  <a href='../081print.mu.html#L782'>screen-height</a>:num <span class="Special">&lt;-</span> <a href='../081print.mu.html#L782'>screen-height</a> <a href='../081print.mu.html#L16'>screen</a>
 <span id="L172" class="LineNr"> 172 </span>  left:num <span class="Special">&lt;-</span> get *editor, <span class="Constant">left:offset</span>
 <span id="L173" class="LineNr"> 173 </span>  right:num <span class="Special">&lt;-</span> get *editor, <span class="Constant">right:offset</span>
 <span id="L174" class="LineNr"> 174 </span>  before-cursor:&amp;:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special">&lt;-</span> get *editor, <span class="Constant">before-cursor:offset</span>
@@ -251,7 +251,7 @@ if ('onhashchange' in window) {
 <span id="L188" class="LineNr"> 188 </span>  <span class="Conceal">¦</span> <span class="muControl">return-unless</span> regular-character?, <span class="Constant">0/don't-render</span>
 <span id="L189" class="LineNr"> 189 </span>  <span class="Conceal">¦</span> <span class="Comment"># otherwise type it in</span>
 <span id="L190" class="LineNr"> 190 </span><span class="Constant">  </span><span class="Conceal">¦</span><span class="Constant"> &lt;insert-character-begin&gt;</span>
-<span id="L191" class="LineNr"> 191 </span>  <span class="Conceal">¦</span> go-render? <span class="Special">&lt;-</span> <a href='002-typing.mu.html#L203'>insert-at-cursor</a> editor, c, <a href='../081print.mu.html#L4'>screen</a>
+<span id="L191" class="LineNr"> 191 </span>  <span class="Conceal">¦</span> go-render? <span class="Special">&lt;-</span> <a href='002-typing.mu.html#L203'>insert-at-cursor</a> editor, c, <a href='../081print.mu.html#L16'>screen</a>
 <span id="L192" class="LineNr"> 192 </span><span class="Constant">  </span><span class="Conceal">¦</span><span class="Constant"> &lt;insert-character-end&gt;</span>
 <span id="L193" class="LineNr"> 193 </span>  <span class="Conceal">¦</span> <span class="muControl">return</span>
 <span id="L194" class="LineNr"> 194 </span>  <span class="Delimiter">}</span>
@@ -263,7 +263,7 @@ if ('onhashchange' in window) {
 <span id="L200" class="LineNr"> 200 </span>  <span class="muControl">return</span> <span class="Constant">1/go-render</span>
 <span id="L201" class="LineNr"> 201 </span>]
 <span id="L202" class="LineNr"> 202 </span>
-<span id="L203" class="LineNr"> 203 </span><span class="muRecipe">def</span> <a href='002-typing.mu.html#L203'>insert-at-cursor</a> editor:&amp;:editor, c:char, <a href='../081print.mu.html#L4'>screen</a>:&amp;:<a href='../081print.mu.html#L4'>screen</a><span class="muRecipe"> -&gt; </span>go-render?:bool, editor:&amp;:editor, <a href='../081print.mu.html#L4'>screen</a>:&amp;:<a href='../081print.mu.html#L4'>screen</a> [
+<span id="L203" class="LineNr"> 203 </span><span class="muRecipe">def</span> <a href='002-typing.mu.html#L203'>insert-at-cursor</a> editor:&amp;:editor, c:char, <a href='../081print.mu.html#L16'>screen</a>:&amp;:<a href='../081print.mu.html#L16'>screen</a><span class="muRecipe"> -&gt; </span>go-render?:bool, editor:&amp;:editor, <a href='../081print.mu.html#L16'>screen</a>:&amp;:<a href='../081print.mu.html#L16'>screen</a> [
 <span id="L204" class="LineNr"> 204 </span>  <span class="Constant">local-scope</span>
 <span id="L205" class="LineNr"> 205 </span>  <span class="Constant">load-ingredients</span>
 <span id="L206" class="LineNr"> 206 </span>  before-cursor:&amp;:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special">&lt;-</span> get *editor, <span class="Constant">before-cursor:offset</span>
@@ -276,8 +276,8 @@ if ('onhashchange' in window) {
 <span id="L213" class="LineNr"> 213 </span>  right:num <span class="Special">&lt;-</span> get *editor, <span class="Constant">right:offset</span>
 <span id="L214" class="LineNr"> 214 </span>  save-row:num <span class="Special">&lt;-</span> copy cursor-row
 <span id="L215" class="LineNr"> 215 </span>  save-column:num <span class="Special">&lt;-</span> copy cursor-column
-<span id="L216" class="LineNr"> 216 </span>  <a href='../081print.mu.html#L735'>screen-width</a>:num <span class="Special">&lt;-</span> <a href='../081print.mu.html#L735'>screen-width</a> <a href='../081print.mu.html#L4'>screen</a>
-<span id="L217" class="LineNr"> 217 </span>  <a href='../081print.mu.html#L748'>screen-height</a>:num <span class="Special">&lt;-</span> <a href='../081print.mu.html#L748'>screen-height</a> <a href='../081print.mu.html#L4'>screen</a>
+<span id="L216" class="LineNr"> 216 </span>  <a href='../081print.mu.html#L768'>screen-width</a>:num <span class="Special">&lt;-</span> <a href='../081print.mu.html#L768'>screen-width</a> <a href='../081print.mu.html#L16'>screen</a>
+<span id="L217" class="LineNr"> 217 </span>  <a href='../081print.mu.html#L782'>screen-height</a>:num <span class="Special">&lt;-</span> <a href='../081print.mu.html#L782'>screen-height</a> <a href='../081print.mu.html#L16'>screen</a>
 <span id="L218" class="LineNr"> 218 </span>  <span class="Comment"># occasionally we'll need to mess with the cursor</span>
 <span id="L219" class="LineNr"> 219 </span><span class="Constant">  <a href='002-typing.mu.html#L219'>&lt;insert-character-special-case&gt;</a></span>
 <span id="L220" class="LineNr"> 220 </span>  <span class="Comment"># but mostly we'll just move the cursor right</span>
@@ -288,22 +288,22 @@ if ('onhashchange' in window) {
 <span id="L225" class="LineNr"> 225 </span>  <span class="Conceal">¦</span> <span class="Comment"># at end of all text? no need to scroll? just print the character and leave</span>
 <span id="L226" class="LineNr"> 226 </span>  <span class="Conceal">¦</span> at-end?:bool <span class="Special">&lt;-</span> equal <a href='../065duplex_list.mu.html#L29'>next</a>, <span class="Constant">0/null</span>
 <span id="L227" class="LineNr"> 227 </span>  <span class="Conceal">¦</span> <span class="muControl">break-unless</span> at-end?
-<span id="L228" class="LineNr"> 228 </span>  <span class="Conceal">¦</span> bottom:num <span class="Special">&lt;-</span> subtract <a href='../081print.mu.html#L748'>screen-height</a>,<span class="Constant"> 1</span>
+<span id="L228" class="LineNr"> 228 </span>  <span class="Conceal">¦</span> bottom:num <span class="Special">&lt;-</span> subtract <a href='../081print.mu.html#L782'>screen-height</a>,<span class="Constant"> 1</span>
 <span id="L229" class="LineNr"> 229 </span>  <span class="Conceal">¦</span> at-bottom?:bool <span class="Special">&lt;-</span> equal save-row, bottom
 <span id="L230" class="LineNr"> 230 </span>  <span class="Conceal">¦</span> at-right?:bool <span class="Special">&lt;-</span> equal save-column, right
 <span id="L231" class="LineNr"> 231 </span>  <span class="Conceal">¦</span> overflow?:bool <span class="Special">&lt;-</span> and at-bottom?, at-right?
 <span id="L232" class="LineNr"> 232 </span>  <span class="Conceal">¦</span> <span class="muControl">break-if</span> overflow?
-<span id="L233" class="LineNr"> 233 </span>  <span class="Conceal">¦</span> move-cursor <a href='../081print.mu.html#L4'>screen</a>, save-row, save-column
-<span id="L234" class="LineNr"> 234 </span>  <span class="Conceal">¦</span> print <a href='../081print.mu.html#L4'>screen</a>, c
+<span id="L233" class="LineNr"> 233 </span>  <span class="Conceal">¦</span> move-cursor <a href='../081print.mu.html#L16'>screen</a>, save-row, save-column
+<span id="L234" class="LineNr"> 234 </span>  <span class="Conceal">¦</span> print <a href='../081print.mu.html#L16'>screen</a>, c
 <span id="L235" class="LineNr"> 235 </span>  <span class="Conceal">¦</span> <span class="muControl">return</span> <span class="Constant">0/don't-render</span>
 <span id="L236" class="LineNr"> 236 </span>  <span class="Delimiter">}</span>
 <span id="L237" class="LineNr"> 237 </span>  <span class="Delimiter">{</span>
 <span id="L238" class="LineNr"> 238 </span>  <span class="Conceal">¦</span> <span class="Comment"># not at right margin? print the character and rest of line</span>
 <span id="L239" class="LineNr"> 239 </span>  <span class="Conceal">¦</span> <span class="muControl">break-unless</span> <a href='../065duplex_list.mu.html#L29'>next</a>
-<span id="L240" class="LineNr"> 240 </span>  <span class="Conceal">¦</span> at-right?:bool <span class="Special">&lt;-</span> greater-or-equal cursor-column, <a href='../081print.mu.html#L735'>screen-width</a>
+<span id="L240" class="LineNr"> 240 </span>  <span class="Conceal">¦</span> at-right?:bool <span class="Special">&lt;-</span> greater-or-equal cursor-column, <a href='../081print.mu.html#L768'>screen-width</a>
 <span id="L241" class="LineNr"> 241 </span>  <span class="Conceal">¦</span> <span class="muControl">break-if</span> at-right?
 <span id="L242" class="LineNr"> 242 </span>  <span class="Conceal">¦</span> curr:&amp;:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special">&lt;-</span> copy before-cursor
-<span id="L243" class="LineNr"> 243 </span>  <span class="Conceal">¦</span> move-cursor <a href='../081print.mu.html#L4'>screen</a>, save-row, save-column
+<span id="L243" class="LineNr"> 243 </span>  <span class="Conceal">¦</span> move-cursor <a href='../081print.mu.html#L16'>screen</a>, save-row, save-column
 <span id="L244" class="LineNr"> 244 </span>  <span class="Conceal">¦</span> curr-column:num <span class="Special">&lt;-</span> copy save-column
 <span id="L245" class="LineNr"> 245 </span>  <span class="Conceal">¦</span> <span class="Delimiter">{</span>
 <span id="L246" class="LineNr"> 246 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment"># hit right margin? give up and let caller render</span>
@@ -314,7 +314,7 @@ if ('onhashchange' in window) {
 <span id="L251" class="LineNr"> 251 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> currc:char <span class="Special">&lt;-</span> get *curr, <span class="Constant">value:offset</span>
 <span id="L252" class="LineNr"> 252 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> at-newline?:bool <span class="Special">&lt;-</span> equal currc, <span class="Constant">10/newline</span>
 <span id="L253" class="LineNr"> 253 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> at-newline?
-<span id="L254" class="LineNr"> 254 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> print <a href='../081print.mu.html#L4'>screen</a>, currc
+<span id="L254" class="LineNr"> 254 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> print <a href='../081print.mu.html#L16'>screen</a>, currc
 <span id="L255" class="LineNr"> 255 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr-column <span class="Special">&lt;-</span> add curr-column,<span class="Constant"> 1</span>
 <span id="L256" class="LineNr"> 256 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr <span class="Special">&lt;-</span> <a href='../065duplex_list.mu.html#L29'>next</a> curr
 <span id="L257" class="LineNr"> 257 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">loop</span>
@@ -325,29 +325,29 @@ if ('onhashchange' in window) {
 <span id="L262" class="LineNr"> 262 </span>]
 <span id="L263" class="LineNr"> 263 </span>
 <span id="L264" class="LineNr"> 264 </span><span class="Comment"># helper for tests</span>
-<span id="L265" class="LineNr"> 265 </span><span class="muRecipe">def</span> <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L4'>screen</a>:&amp;:<a href='../081print.mu.html#L4'>screen</a>, editor:&amp;:editor<span class="muRecipe"> -&gt; </span><a href='../081print.mu.html#L4'>screen</a>:&amp;:<a href='../081print.mu.html#L4'>screen</a>, editor:&amp;:editor [
+<span id="L265" class="LineNr"> 265 </span><span class="muRecipe">def</span> <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L16'>screen</a>:&amp;:<a href='../081print.mu.html#L16'>screen</a>, editor:&amp;:editor<span class="muRecipe"> -&gt; </span><a href='../081print.mu.html#L16'>screen</a>:&amp;:<a href='../081print.mu.html#L16'>screen</a>, editor:&amp;:editor [
 <span id="L266" class="LineNr"> 266 </span>  <span class="Constant">local-scope</span>
 <span id="L267" class="LineNr"> 267 </span>  <span class="Constant">load-ingredients</span>
-<span id="L268" class="LineNr"> 268 </span>  old-top-idx:num <span class="Special">&lt;-</span> <a href='../081print.mu.html#L493'>save-top-idx</a> <a href='../081print.mu.html#L4'>screen</a>
+<span id="L268" class="LineNr"> 268 </span>  old-top-idx:num <span class="Special">&lt;-</span> <a href='../081print.mu.html#L509'>save-top-idx</a> <a href='../081print.mu.html#L16'>screen</a>
 <span id="L269" class="LineNr"> 269 </span>  left:num <span class="Special">&lt;-</span> get *editor, <span class="Constant">left:offset</span>
 <span id="L270" class="LineNr"> 270 </span>  right:num <span class="Special">&lt;-</span> get *editor, <span class="Constant">right:offset</span>
-<span id="L271" class="LineNr"> 271 </span>  row:num, column:num <span class="Special">&lt;-</span> <a href='001-editor.mu.html#L107'>render</a> <a href='../081print.mu.html#L4'>screen</a>, editor
-<span id="L272" class="LineNr"> 272 </span>  <a href='../081print.mu.html#L536'>clear-line-until</a> <a href='../081print.mu.html#L4'>screen</a>, right
+<span id="L271" class="LineNr"> 271 </span>  row:num, column:num <span class="Special">&lt;-</span> <a href='001-editor.mu.html#L107'>render</a> <a href='../081print.mu.html#L16'>screen</a>, editor
+<span id="L272" class="LineNr"> 272 </span>  <a href='../081print.mu.html#L553'>clear-line-until</a> <a href='../081print.mu.html#L16'>screen</a>, right
 <span id="L273" class="LineNr"> 273 </span>  row <span class="Special">&lt;-</span> add row,<span class="Constant"> 1</span>
-<span id="L274" class="LineNr"> 274 </span>  <a href='002-typing.mu.html#L1116'>draw-horizontal</a> <a href='../081print.mu.html#L4'>screen</a>, row, left, right, <span class="Constant">9480/horizontal-dotted</span>
+<span id="L274" class="LineNr"> 274 </span>  <a href='002-typing.mu.html#L1116'>draw-horizontal</a> <a href='../081print.mu.html#L16'>screen</a>, row, left, right, <span class="Constant">9480/horizontal-dotted</span>
 <span id="L275" class="LineNr"> 275 </span>  row <span class="Special">&lt;-</span> add row,<span class="Constant"> 1</span>
-<span id="L276" class="LineNr"> 276 </span>  <a href='001-editor.mu.html#L207'>clear-screen-from</a> <a href='../081print.mu.html#L4'>screen</a>, row, left, left, right
-<span id="L277" class="LineNr"> 277 </span>  <a href='../081print.mu.html#L499'>assert-no-scroll</a> <a href='../081print.mu.html#L4'>screen</a>, old-top-idx
+<span id="L276" class="LineNr"> 276 </span>  <a href='001-editor.mu.html#L207'>clear-screen-from</a> <a href='../081print.mu.html#L16'>screen</a>, row, left, left, right
+<span id="L277" class="LineNr"> 277 </span>  <a href='../081print.mu.html#L515'>assert-no-scroll</a> <a href='../081print.mu.html#L16'>screen</a>, old-top-idx
 <span id="L278" class="LineNr"> 278 </span>]
 <span id="L279" class="LineNr"> 279 </span>
 <span id="L280" class="LineNr"> 280 </span><span class="muScenario">scenario</span> editor-handles-empty-event-queue [
 <span id="L281" class="LineNr"> 281 </span>  <span class="Constant">local-scope</span>
 <span id="L282" class="LineNr"> 282 </span>  assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
 <span id="L283" class="LineNr"> 283 </span>  e:&amp;:editor <span class="Special">&lt;-</span> <a href='001-editor.mu.html#L51'>new-editor</a> <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
-<span id="L284" class="LineNr"> 284 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L4'>screen</a>, e
+<span id="L284" class="LineNr"> 284 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L16'>screen</a>, e
 <span id="L285" class="LineNr"> 285 </span>  assume-console <span class="Constant">[]</span>
 <span id="L286" class="LineNr"> 286 </span>  run [
-<span id="L287" class="LineNr"> 287 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L287" class="LineNr"> 287 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L288" class="LineNr"> 288 </span>  ]
 <span id="L289" class="LineNr"> 289 </span>  screen-should-contain [
 <span id="L290" class="LineNr"> 290 </span>  <span class="Conceal">¦</span><span class="Constant"> .          .</span>
@@ -361,13 +361,13 @@ if ('onhashchange' in window) {
 <span id="L298" class="LineNr"> 298 </span>  <span class="Constant">local-scope</span>
 <span id="L299" class="LineNr"> 299 </span>  assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
 <span id="L300" class="LineNr"> 300 </span>  e:&amp;:editor <span class="Special">&lt;-</span> <a href='001-editor.mu.html#L51'>new-editor</a> <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
-<span id="L301" class="LineNr"> 301 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L4'>screen</a>, e
+<span id="L301" class="LineNr"> 301 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L16'>screen</a>, e
 <span id="L302" class="LineNr"> 302 </span>  $clear-trace
 <span id="L303" class="LineNr"> 303 </span>  assume-console [
 <span id="L304" class="LineNr"> 304 </span>  <span class="Conceal">¦</span> left-click<span class="Constant"> 1</span>,<span class="Constant"> 1</span>  <span class="Comment"># on the 'b'</span>
 <span id="L305" class="LineNr"> 305 </span>  ]
 <span id="L306" class="LineNr"> 306 </span>  run [
-<span id="L307" class="LineNr"> 307 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L307" class="LineNr"> 307 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L308" class="LineNr"> 308 </span>  <span class="Conceal">¦</span> 3:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-row:offset</span>
 <span id="L309" class="LineNr"> 309 </span>  <span class="Conceal">¦</span> 4:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-column:offset</span>
 <span id="L310" class="LineNr"> 310 </span>  ]
@@ -393,7 +393,7 @@ if ('onhashchange' in window) {
 <span id="L330" class="LineNr"> 330 </span>  <span class="Conceal">¦</span> left-click<span class="Constant"> 1</span>,<span class="Constant"> 7</span>  <span class="Comment"># last line, to the right of text</span>
 <span id="L331" class="LineNr"> 331 </span>  ]
 <span id="L332" class="LineNr"> 332 </span>  run [
-<span id="L333" class="LineNr"> 333 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L333" class="LineNr"> 333 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L334" class="LineNr"> 334 </span>  <span class="Conceal">¦</span> 3:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-row:offset</span>
 <span id="L335" class="LineNr"> 335 </span>  <span class="Conceal">¦</span> 4:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-column:offset</span>
 <span id="L336" class="LineNr"> 336 </span>  ]
@@ -415,7 +415,7 @@ if ('onhashchange' in window) {
 <span id="L352" class="LineNr"> 352 </span>  <span class="Conceal">¦</span> left-click<span class="Constant"> 1</span>,<span class="Constant"> 7</span>  <span class="Comment"># interior line, to the right of text</span>
 <span id="L353" class="LineNr"> 353 </span>  ]
 <span id="L354" class="LineNr"> 354 </span>  run [
-<span id="L355" class="LineNr"> 355 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L355" class="LineNr"> 355 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L356" class="LineNr"> 356 </span>  <span class="Conceal">¦</span> 3:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-row:offset</span>
 <span id="L357" class="LineNr"> 357 </span>  <span class="Conceal">¦</span> 4:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-column:offset</span>
 <span id="L358" class="LineNr"> 358 </span>  ]
@@ -437,7 +437,7 @@ if ('onhashchange' in window) {
 <span id="L374" class="LineNr"> 374 </span>  <span class="Conceal">¦</span> left-click<span class="Constant"> 3</span>,<span class="Constant"> 7</span>  <span class="Comment"># below text</span>
 <span id="L375" class="LineNr"> 375 </span>  ]
 <span id="L376" class="LineNr"> 376 </span>  run [
-<span id="L377" class="LineNr"> 377 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L377" class="LineNr"> 377 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L378" class="LineNr"> 378 </span>  <span class="Conceal">¦</span> 3:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-row:offset</span>
 <span id="L379" class="LineNr"> 379 </span>  <span class="Conceal">¦</span> 4:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-column:offset</span>
 <span id="L380" class="LineNr"> 380 </span>  ]
@@ -453,14 +453,14 @@ if ('onhashchange' in window) {
 <span id="L390" class="LineNr"> 390 </span>  assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
 <span id="L391" class="LineNr"> 391 </span>  <span class="Comment"># editor occupies only left half of screen</span>
 <span id="L392" class="LineNr"> 392 </span>  e:&amp;:editor <span class="Special">&lt;-</span> <a href='001-editor.mu.html#L51'>new-editor</a> <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
-<span id="L393" class="LineNr"> 393 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L4'>screen</a>, e
+<span id="L393" class="LineNr"> 393 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L16'>screen</a>, e
 <span id="L394" class="LineNr"> 394 </span>  $clear-trace
 <span id="L395" class="LineNr"> 395 </span>  assume-console [
 <span id="L396" class="LineNr"> 396 </span>  <span class="Conceal">¦</span> <span class="Comment"># click on right half of screen</span>
 <span id="L397" class="LineNr"> 397 </span>  <span class="Conceal">¦</span> left-click<span class="Constant"> 3</span>,<span class="Constant"> 8</span>
 <span id="L398" class="LineNr"> 398 </span>  ]
 <span id="L399" class="LineNr"> 399 </span>  run [
-<span id="L400" class="LineNr"> 400 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L400" class="LineNr"> 400 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L401" class="LineNr"> 401 </span>  <span class="Conceal">¦</span> 3:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-row:offset</span>
 <span id="L402" class="LineNr"> 402 </span>  <span class="Conceal">¦</span> 4:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-column:offset</span>
 <span id="L403" class="LineNr"> 403 </span>  ]
@@ -481,14 +481,14 @@ if ('onhashchange' in window) {
 <span id="L418" class="LineNr"> 418 </span>  <span class="Constant">local-scope</span>
 <span id="L419" class="LineNr"> 419 </span>  assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
 <span id="L420" class="LineNr"> 420 </span>  e:&amp;:editor <span class="Special">&lt;-</span> <a href='001-editor.mu.html#L51'>new-editor</a> <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
-<span id="L421" class="LineNr"> 421 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L4'>screen</a>, e
+<span id="L421" class="LineNr"> 421 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L16'>screen</a>, e
 <span id="L422" class="LineNr"> 422 </span>  $clear-trace
 <span id="L423" class="LineNr"> 423 </span>  assume-console [
 <span id="L424" class="LineNr"> 424 </span>  <span class="Conceal">¦</span> <span class="Comment"># click on first, 'menu' row</span>
 <span id="L425" class="LineNr"> 425 </span>  <span class="Conceal">¦</span> left-click<span class="Constant"> 0</span>,<span class="Constant"> 3</span>
 <span id="L426" class="LineNr"> 426 </span>  ]
 <span id="L427" class="LineNr"> 427 </span>  run [
-<span id="L428" class="LineNr"> 428 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L428" class="LineNr"> 428 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L429" class="LineNr"> 429 </span>  <span class="Conceal">¦</span> 3:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-row:offset</span>
 <span id="L430" class="LineNr"> 430 </span>  <span class="Conceal">¦</span> 4:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-column:offset</span>
 <span id="L431" class="LineNr"> 431 </span>  ]
@@ -503,13 +503,13 @@ if ('onhashchange' in window) {
 <span id="L440" class="LineNr"> 440 </span>  <span class="Constant">local-scope</span>
 <span id="L441" class="LineNr"> 441 </span>  assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
 <span id="L442" class="LineNr"> 442 </span>  e:&amp;:editor <span class="Special">&lt;-</span> <a href='001-editor.mu.html#L51'>new-editor</a> <span class="Constant">[]</span>, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
-<span id="L443" class="LineNr"> 443 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L4'>screen</a>, e
+<span id="L443" class="LineNr"> 443 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L16'>screen</a>, e
 <span id="L444" class="LineNr"> 444 </span>  $clear-trace
 <span id="L445" class="LineNr"> 445 </span>  assume-console [
 <span id="L446" class="LineNr"> 446 </span>  <span class="Conceal">¦</span> type <span class="Constant">[abc]</span>
 <span id="L447" class="LineNr"> 447 </span>  ]
 <span id="L448" class="LineNr"> 448 </span>  run [
-<span id="L449" class="LineNr"> 449 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L449" class="LineNr"> 449 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L450" class="LineNr"> 450 </span>  ]
 <span id="L451" class="LineNr"> 451 </span>  screen-should-contain [
 <span id="L452" class="LineNr"> 452 </span>  <span class="Conceal">¦</span><span class="Constant"> .          .</span>
@@ -524,7 +524,7 @@ if ('onhashchange' in window) {
 <span id="L461" class="LineNr"> 461 </span>  <span class="Constant">local-scope</span>
 <span id="L462" class="LineNr"> 462 </span>  assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
 <span id="L463" class="LineNr"> 463 </span>  e:&amp;:editor <span class="Special">&lt;-</span> <a href='001-editor.mu.html#L51'>new-editor</a> <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
-<span id="L464" class="LineNr"> 464 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L4'>screen</a>, e
+<span id="L464" class="LineNr"> 464 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L16'>screen</a>, e
 <span id="L465" class="LineNr"> 465 </span>  $clear-trace
 <span id="L466" class="LineNr"> 466 </span>  <span class="Comment"># type two letters at different places</span>
 <span id="L467" class="LineNr"> 467 </span>  assume-console [
@@ -533,7 +533,7 @@ if ('onhashchange' in window) {
 <span id="L470" class="LineNr"> 470 </span>  <span class="Conceal">¦</span> type <span class="Constant">[d]</span>
 <span id="L471" class="LineNr"> 471 </span>  ]
 <span id="L472" class="LineNr"> 472 </span>  run [
-<span id="L473" class="LineNr"> 473 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L473" class="LineNr"> 473 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L474" class="LineNr"> 474 </span>  ]
 <span id="L475" class="LineNr"> 475 </span>  screen-should-contain [
 <span id="L476" class="LineNr"> 476 </span>  <span class="Conceal">¦</span><span class="Constant"> .          .</span>
@@ -548,14 +548,14 @@ if ('onhashchange' in window) {
 <span id="L485" class="LineNr"> 485 </span>  <span class="Constant">local-scope</span>
 <span id="L486" class="LineNr"> 486 </span>  assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
 <span id="L487" class="LineNr"> 487 </span>  e:&amp;:editor <span class="Special">&lt;-</span> <a href='001-editor.mu.html#L51'>new-editor</a> <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
-<span id="L488" class="LineNr"> 488 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L4'>screen</a>, e
+<span id="L488" class="LineNr"> 488 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L16'>screen</a>, e
 <span id="L489" class="LineNr"> 489 </span>  $clear-trace
 <span id="L490" class="LineNr"> 490 </span>  assume-console [
 <span id="L491" class="LineNr"> 491 </span>  <span class="Conceal">¦</span> left-click<span class="Constant"> 1</span>,<span class="Constant"> 5</span>  <span class="Comment"># right of last line</span>
 <span id="L492" class="LineNr"> 492 </span>  <span class="Conceal">¦</span> type <span class="Constant">[d]</span>
 <span id="L493" class="LineNr"> 493 </span>  ]
 <span id="L494" class="LineNr"> 494 </span>  run [
-<span id="L495" class="LineNr"> 495 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L495" class="LineNr"> 495 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L496" class="LineNr"> 496 </span>  ]
 <span id="L497" class="LineNr"> 497 </span>  screen-should-contain [
 <span id="L498" class="LineNr"> 498 </span>  <span class="Conceal">¦</span><span class="Constant"> .          .</span>
@@ -572,14 +572,14 @@ if ('onhashchange' in window) {
 <span id="L509" class="LineNr"> 509 </span>  s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span id="L510" class="LineNr"> 510 </span><span class="Constant">d]</span>
 <span id="L511" class="LineNr"> 511 </span>  e:&amp;:editor <span class="Special">&lt;-</span> <a href='001-editor.mu.html#L51'>new-editor</a> s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
-<span id="L512" class="LineNr"> 512 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L4'>screen</a>, e
+<span id="L512" class="LineNr"> 512 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L16'>screen</a>, e
 <span id="L513" class="LineNr"> 513 </span>  $clear-trace
 <span id="L514" class="LineNr"> 514 </span>  assume-console [
 <span id="L515" class="LineNr"> 515 </span>  <span class="Conceal">¦</span> left-click<span class="Constant"> 1</span>,<span class="Constant"> 5</span>  <span class="Comment"># right of non-last line</span>
 <span id="L516" class="LineNr"> 516 </span>  <span class="Conceal">¦</span> type <span class="Constant">[e]</span>
 <span id="L517" class="LineNr"> 517 </span>  ]
 <span id="L518" class="LineNr"> 518 </span>  run [
-<span id="L519" class="LineNr"> 519 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L519" class="LineNr"> 519 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L520" class="LineNr"> 520 </span>  ]
 <span id="L521" class="LineNr"> 521 </span>  screen-should-contain [
 <span id="L522" class="LineNr"> 522 </span>  <span class="Conceal">¦</span><span class="Constant"> .          .</span>
@@ -595,14 +595,14 @@ if ('onhashchange' in window) {
 <span id="L532" class="LineNr"> 532 </span>  <span class="Constant">local-scope</span>
 <span id="L533" class="LineNr"> 533 </span>  assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
 <span id="L534" class="LineNr"> 534 </span>  e:&amp;:editor <span class="Special">&lt;-</span> <a href='001-editor.mu.html#L51'>new-editor</a> <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
-<span id="L535" class="LineNr"> 535 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L4'>screen</a>, e
+<span id="L535" class="LineNr"> 535 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L16'>screen</a>, e
 <span id="L536" class="LineNr"> 536 </span>  $clear-trace
 <span id="L537" class="LineNr"> 537 </span>  assume-console [
 <span id="L538" class="LineNr"> 538 </span>  <span class="Conceal">¦</span> left-click<span class="Constant"> 3</span>,<span class="Constant"> 5</span>  <span class="Comment"># below all text</span>
 <span id="L539" class="LineNr"> 539 </span>  <span class="Conceal">¦</span> type <span class="Constant">[d]</span>
 <span id="L540" class="LineNr"> 540 </span>  ]
 <span id="L541" class="LineNr"> 541 </span>  run [
-<span id="L542" class="LineNr"> 542 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L542" class="LineNr"> 542 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L543" class="LineNr"> 543 </span>  ]
 <span id="L544" class="LineNr"> 544 </span>  screen-should-contain [
 <span id="L545" class="LineNr"> 545 </span>  <span class="Conceal">¦</span><span class="Constant"> .          .</span>
@@ -619,14 +619,14 @@ if ('onhashchange' in window) {
 <span id="L556" class="LineNr"> 556 </span>  s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span id="L557" class="LineNr"> 557 </span><span class="Constant">d]</span>
 <span id="L558" class="LineNr"> 558 </span>  e:&amp;:editor <span class="Special">&lt;-</span> <a href='001-editor.mu.html#L51'>new-editor</a> s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
-<span id="L559" class="LineNr"> 559 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L4'>screen</a>, e
+<span id="L559" class="LineNr"> 559 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L16'>screen</a>, e
 <span id="L560" class="LineNr"> 560 </span>  $clear-trace
 <span id="L561" class="LineNr"> 561 </span>  assume-console [
 <span id="L562" class="LineNr"> 562 </span>  <span class="Conceal">¦</span> left-click<span class="Constant"> 3</span>,<span class="Constant"> 5</span>  <span class="Comment"># below all text</span>
 <span id="L563" class="LineNr"> 563 </span>  <span class="Conceal">¦</span> type <span class="Constant">[e]</span>
 <span id="L564" class="LineNr"> 564 </span>  ]
 <span id="L565" class="LineNr"> 565 </span>  run [
-<span id="L566" class="LineNr"> 566 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L566" class="LineNr"> 566 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L567" class="LineNr"> 567 </span>  ]
 <span id="L568" class="LineNr"> 568 </span>  screen-should-contain [
 <span id="L569" class="LineNr"> 569 </span>  <span class="Conceal">¦</span><span class="Constant"> .          .</span>
@@ -644,14 +644,14 @@ if ('onhashchange' in window) {
 <span id="L581" class="LineNr"> 581 </span>  s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span id="L582" class="LineNr"> 582 </span><span class="Constant">d]</span>
 <span id="L583" class="LineNr"> 583 </span>  e:&amp;:editor <span class="Special">&lt;-</span> <a href='001-editor.mu.html#L51'>new-editor</a> s, <span class="Constant">0/left</span>, <span class="Constant">10/right</span>
-<span id="L584" class="LineNr"> 584 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L4'>screen</a>, e
+<span id="L584" class="LineNr"> 584 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L16'>screen</a>, e
 <span id="L585" class="LineNr"> 585 </span>  $clear-trace
 <span id="L586" class="LineNr"> 586 </span>  assume-console [
 <span id="L587" class="LineNr"> 587 </span>  <span class="Conceal">¦</span> left-click<span class="Constant"> 3</span>,<span class="Constant"> 5</span>  <span class="Comment"># below all text</span>
 <span id="L588" class="LineNr"> 588 </span>  <span class="Conceal">¦</span> type <span class="Constant">[ef]</span>
 <span id="L589" class="LineNr"> 589 </span>  ]
 <span id="L590" class="LineNr"> 590 </span>  run [
-<span id="L591" class="LineNr"> 591 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L591" class="LineNr"> 591 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L592" class="LineNr"> 592 </span>  ]
 <span id="L593" class="LineNr"> 593 </span>  screen-should-contain [
 <span id="L594" class="LineNr"> 594 </span>  <span class="Conceal">¦</span><span class="Constant"> .          .</span>
@@ -667,12 +667,12 @@ if ('onhashchange' in window) {
 <span id="L604" class="LineNr"> 604 </span>  <span class="Constant">local-scope</span>
 <span id="L605" class="LineNr"> 605 </span>  assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
 <span id="L606" class="LineNr"> 606 </span>  e:&amp;:editor <span class="Special">&lt;-</span> <a href='001-editor.mu.html#L51'>new-editor</a> <span class="Constant">[ab]</span>, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
-<span id="L607" class="LineNr"> 607 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L4'>screen</a>, e
+<span id="L607" class="LineNr"> 607 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L16'>screen</a>, e
 <span id="L608" class="LineNr"> 608 </span>  assume-console [
 <span id="L609" class="LineNr"> 609 </span>  <span class="Conceal">¦</span> type <span class="Constant">[01]</span>
 <span id="L610" class="LineNr"> 610 </span>  ]
 <span id="L611" class="LineNr"> 611 </span>  run [
-<span id="L612" class="LineNr"> 612 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L612" class="LineNr"> 612 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L613" class="LineNr"> 613 </span>  ]
 <span id="L614" class="LineNr"> 614 </span>  screen-should-contain [
 <span id="L615" class="LineNr"> 615 </span>  <span class="Conceal">¦</span><span class="Constant"> .          .</span>
@@ -688,13 +688,13 @@ if ('onhashchange' in window) {
 <span id="L625" class="LineNr"> 625 </span>  <span class="Constant">local-scope</span>
 <span id="L626" class="LineNr"> 626 </span>  assume-screen <span class="Constant">5/width</span>, <span class="Constant">5/height</span>
 <span id="L627" class="LineNr"> 627 </span>  e:&amp;:editor <span class="Special">&lt;-</span> <a href='001-editor.mu.html#L51'>new-editor</a> <span class="Constant">[abc]</span>, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
-<span id="L628" class="LineNr"> 628 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L4'>screen</a>, e
+<span id="L628" class="LineNr"> 628 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L16'>screen</a>, e
 <span id="L629" class="LineNr"> 629 </span>  <span class="Comment"># type a letter</span>
 <span id="L630" class="LineNr"> 630 </span>  assume-console [
 <span id="L631" class="LineNr"> 631 </span>  <span class="Conceal">¦</span> type <span class="Constant">[e]</span>
 <span id="L632" class="LineNr"> 632 </span>  ]
 <span id="L633" class="LineNr"> 633 </span>  run [
-<span id="L634" class="LineNr"> 634 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L634" class="LineNr"> 634 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L635" class="LineNr"> 635 </span>  ]
 <span id="L636" class="LineNr"> 636 </span>  <span class="Comment"># no wrap yet</span>
 <span id="L637" class="LineNr"> 637 </span>  screen-should-contain [
@@ -709,7 +709,7 @@ if ('onhashchange' in window) {
 <span id="L646" class="LineNr"> 646 </span>  <span class="Conceal">¦</span> type <span class="Constant">[f]</span>
 <span id="L647" class="LineNr"> 647 </span>  ]
 <span id="L648" class="LineNr"> 648 </span>  run [
-<span id="L649" class="LineNr"> 649 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L649" class="LineNr"> 649 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L650" class="LineNr"> 650 </span>  ]
 <span id="L651" class="LineNr"> 651 </span>  <span class="Comment"># now wrap</span>
 <span id="L652" class="LineNr"> 652 </span>  screen-should-contain [
@@ -728,14 +728,14 @@ if ('onhashchange' in window) {
 <span id="L665" class="LineNr"> 665 </span>  s:text <span class="Special">&lt;-</span> new <span class="Constant">[abcdefg</span>
 <span id="L666" class="LineNr"> 666 </span><span class="Constant">defg]</span>
 <span id="L667" class="LineNr"> 667 </span>  e:&amp;:editor <span class="Special">&lt;-</span> <a href='001-editor.mu.html#L51'>new-editor</a> s, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
-<span id="L668" class="LineNr"> 668 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L4'>screen</a>, e
+<span id="L668" class="LineNr"> 668 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L16'>screen</a>, e
 <span id="L669" class="LineNr"> 669 </span>  <span class="Comment"># type more text at the start</span>
 <span id="L670" class="LineNr"> 670 </span>  assume-console [
 <span id="L671" class="LineNr"> 671 </span>  <span class="Conceal">¦</span> left-click<span class="Constant"> 3</span>,<span class="Constant"> 0</span>
 <span id="L672" class="LineNr"> 672 </span>  <span class="Conceal">¦</span> type <span class="Constant">[abc]</span>
 <span id="L673" class="LineNr"> 673 </span>  ]
 <span id="L674" class="LineNr"> 674 </span>  run [
-<span id="L675" class="LineNr"> 675 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L675" class="LineNr"> 675 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L676" class="LineNr"> 676 </span>  <span class="Conceal">¦</span> 3:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-row:offset</span>
 <span id="L677" class="LineNr"> 677 </span>  <span class="Conceal">¦</span> 4:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-column:offset</span>
 <span id="L678" class="LineNr"> 678 </span>  ]
@@ -796,7 +796,7 @@ if ('onhashchange' in window) {
 <span id="L733" class="LineNr"> 733 </span>  <span class="Conceal">¦</span> *editor <span class="Special">&lt;-</span> put *editor, <span class="Constant">cursor-row:offset</span>, cursor-row
 <span id="L734" class="LineNr"> 734 </span>  <span class="Conceal">¦</span> <span class="Comment"># if we're out of the screen, scroll down</span>
 <span id="L735" class="LineNr"> 735 </span>  <span class="Conceal">¦</span> <span class="Delimiter">{</span>
-<span id="L736" class="LineNr"> 736 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> below-screen?:bool <span class="Special">&lt;-</span> greater-or-equal cursor-row, <a href='../081print.mu.html#L748'>screen-height</a>
+<span id="L736" class="LineNr"> 736 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> below-screen?:bool <span class="Special">&lt;-</span> greater-or-equal cursor-row, <a href='../081print.mu.html#L782'>screen-height</a>
 <span id="L737" class="LineNr"> 737 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> below-screen?
 <span id="L738" class="LineNr"> 738 </span><span class="Constant">  </span><span class="Conceal">¦</span><span class="Constant"> </span><span class="Conceal">¦</span><span class="Constant"> &lt;scroll-down&gt;</span>
 <span id="L739" class="LineNr"> 739 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
@@ -813,7 +813,7 @@ if ('onhashchange' in window) {
 <span id="L750" class="LineNr"> 750 </span>  <span class="Conceal">¦</span> type <span class="Constant">[f]</span>
 <span id="L751" class="LineNr"> 751 </span>  ]
 <span id="L752" class="LineNr"> 752 </span>  run [
-<span id="L753" class="LineNr"> 753 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L753" class="LineNr"> 753 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L754" class="LineNr"> 754 </span>  <span class="Conceal">¦</span> 3:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-row:offset</span>
 <span id="L755" class="LineNr"> 755 </span>  <span class="Conceal">¦</span> 4:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-column:offset</span>
 <span id="L756" class="LineNr"> 756 </span>  ]
@@ -837,7 +837,7 @@ if ('onhashchange' in window) {
 <span id="L774" class="LineNr"> 774 </span>  s:text <span class="Special">&lt;-</span> new <span class="Constant">[abc</span>
 <span id="L775" class="LineNr"> 775 </span><span class="Constant">xyz]</span>
 <span id="L776" class="LineNr"> 776 </span>  e:&amp;:editor <span class="Special">&lt;-</span> <a href='001-editor.mu.html#L51'>new-editor</a> s, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
-<span id="L777" class="LineNr"> 777 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L4'>screen</a>, e
+<span id="L777" class="LineNr"> 777 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L16'>screen</a>, e
 <span id="L778" class="LineNr"> 778 </span>  screen-should-contain [
 <span id="L779" class="LineNr"> 779 </span>  <span class="Conceal">¦</span><span class="Constant"> .          .</span>
 <span id="L780" class="LineNr"> 780 </span>  <span class="Conceal">¦</span><span class="Constant"> .abc       .</span>
@@ -850,7 +850,7 @@ if ('onhashchange' in window) {
 <span id="L787" class="LineNr"> 787 </span>  <span class="Conceal">¦</span> type <span class="Constant">[de]</span>  <span class="Comment"># trigger wrap</span>
 <span id="L788" class="LineNr"> 788 </span>  ]
 <span id="L789" class="LineNr"> 789 </span>  run [
-<span id="L790" class="LineNr"> 790 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L790" class="LineNr"> 790 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L791" class="LineNr"> 791 </span>  ]
 <span id="L792" class="LineNr"> 792 </span>  screen-should-contain [
 <span id="L793" class="LineNr"> 793 </span>  <span class="Conceal">¦</span><span class="Constant"> .          .</span>
@@ -870,7 +870,7 @@ if ('onhashchange' in window) {
 <span id="L807" class="LineNr"> 807 </span>  <span class="Conceal">¦</span> type <span class="Constant">[01]</span>
 <span id="L808" class="LineNr"> 808 </span>  ]
 <span id="L809" class="LineNr"> 809 </span>  run [
-<span id="L810" class="LineNr"> 810 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L810" class="LineNr"> 810 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L811" class="LineNr"> 811 </span>  <span class="Conceal">¦</span> 3:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-row:offset</span>
 <span id="L812" class="LineNr"> 812 </span>  <span class="Conceal">¦</span> 4:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-column:offset</span>
 <span id="L813" class="LineNr"> 813 </span>  ]
@@ -906,7 +906,7 @@ if ('onhashchange' in window) {
 <span id="L843" class="LineNr"> 843 </span><span class="Constant">1]</span>
 <span id="L844" class="LineNr"> 844 </span>  ]
 <span id="L845" class="LineNr"> 845 </span>  run [
-<span id="L846" class="LineNr"> 846 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L846" class="LineNr"> 846 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L847" class="LineNr"> 847 </span>  ]
 <span id="L848" class="LineNr"> 848 </span>  screen-should-contain [
 <span id="L849" class="LineNr"> 849 </span>  <span class="Conceal">¦</span><span class="Constant"> .          .</span>
@@ -922,13 +922,13 @@ if ('onhashchange' in window) {
 <span id="L859" class="LineNr"> 859 </span>  <span class="Conceal">¦</span> newline?:bool <span class="Special">&lt;-</span> equal c, <span class="Constant">10/newline</span>
 <span id="L860" class="LineNr"> 860 </span>  <span class="Conceal">¦</span> <span class="muControl">break-unless</span> newline?
 <span id="L861" class="LineNr"> 861 </span><span class="Constant">  </span><span class="Conceal">¦</span><span class="Constant"> <a href='002-typing.mu.html#L861'>&lt;insert-enter-begin&gt;</a></span>
-<span id="L862" class="LineNr"> 862 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L868'>insert-new-line-and-indent</a> editor, <a href='../081print.mu.html#L4'>screen</a>
+<span id="L862" class="LineNr"> 862 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L868'>insert-new-line-and-indent</a> editor, <a href='../081print.mu.html#L16'>screen</a>
 <span id="L863" class="LineNr"> 863 </span><span class="Constant">  </span><span class="Conceal">¦</span><span class="Constant"> <a href='002-typing.mu.html#L863'>&lt;insert-enter-end&gt;</a></span>
 <span id="L864" class="LineNr"> 864 </span>  <span class="Conceal">¦</span> <span class="muControl">return</span> <span class="Constant">1/go-render</span>
 <span id="L865" class="LineNr"> 865 </span>  <span class="Delimiter">}</span>
 <span id="L866" class="LineNr"> 866 </span>]
 <span id="L867" class="LineNr"> 867 </span>
-<span id="L868" class="LineNr"> 868 </span><span class="muRecipe">def</span> <a href='002-typing.mu.html#L868'>insert-new-line-and-indent</a> editor:&amp;:editor, <a href='../081print.mu.html#L4'>screen</a>:&amp;:<a href='../081print.mu.html#L4'>screen</a><span class="muRecipe"> -&gt; </span>editor:&amp;:editor, <a href='../081print.mu.html#L4'>screen</a>:&amp;:<a href='../081print.mu.html#L4'>screen</a> [
+<span id="L868" class="LineNr"> 868 </span><span class="muRecipe">def</span> <a href='002-typing.mu.html#L868'>insert-new-line-and-indent</a> editor:&amp;:editor, <a href='../081print.mu.html#L16'>screen</a>:&amp;:<a href='../081print.mu.html#L16'>screen</a><span class="muRecipe"> -&gt; </span>editor:&amp;:editor, <a href='../081print.mu.html#L16'>screen</a>:&amp;:<a href='../081print.mu.html#L16'>screen</a> [
 <span id="L869" class="LineNr"> 869 </span>  <span class="Constant">local-scope</span>
 <span id="L870" class="LineNr"> 870 </span>  <span class="Constant">load-ingredients</span>
 <span id="L871" class="LineNr"> 871 </span>  cursor-row:num <span class="Special">&lt;-</span> get *editor, <span class="Constant">cursor-row:offset</span>
@@ -936,7 +936,7 @@ if ('onhashchange' in window) {
 <span id="L873" class="LineNr"> 873 </span>  before-cursor:&amp;:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special">&lt;-</span> get *editor, <span class="Constant">before-cursor:offset</span>
 <span id="L874" class="LineNr"> 874 </span>  left:num <span class="Special">&lt;-</span> get *editor, <span class="Constant">left:offset</span>
 <span id="L875" class="LineNr"> 875 </span>  right:num <span class="Special">&lt;-</span> get *editor, <span class="Constant">right:offset</span>
-<span id="L876" class="LineNr"> 876 </span>  <a href='../081print.mu.html#L748'>screen-height</a>:num <span class="Special">&lt;-</span> <a href='../081print.mu.html#L748'>screen-height</a> <a href='../081print.mu.html#L4'>screen</a>
+<span id="L876" class="LineNr"> 876 </span>  <a href='../081print.mu.html#L782'>screen-height</a>:num <span class="Special">&lt;-</span> <a href='../081print.mu.html#L782'>screen-height</a> <a href='../081print.mu.html#L16'>screen</a>
 <span id="L877" class="LineNr"> 877 </span>  <span class="Comment"># update cursor coordinates</span>
 <span id="L878" class="LineNr"> 878 </span>  <a href='002-typing.mu.html#L914'>at-start-of-wrapped-line?</a>:bool <span class="Special">&lt;-</span> <a href='002-typing.mu.html#L914'>at-start-of-wrapped-line?</a> editor
 <span id="L879" class="LineNr"> 879 </span>  <span class="Delimiter">{</span>
@@ -948,7 +948,7 @@ if ('onhashchange' in window) {
 <span id="L885" class="LineNr"> 885 </span>  *editor <span class="Special">&lt;-</span> put *editor, <span class="Constant">cursor-column:offset</span>, cursor-column
 <span id="L886" class="LineNr"> 886 </span>  <span class="Comment"># maybe scroll</span>
 <span id="L887" class="LineNr"> 887 </span>  <span class="Delimiter">{</span>
-<span id="L888" class="LineNr"> 888 </span>  <span class="Conceal">¦</span> below-screen?:bool <span class="Special">&lt;-</span> greater-or-equal cursor-row, <a href='../081print.mu.html#L748'>screen-height</a>  <span class="Comment"># must be equal, never greater</span>
+<span id="L888" class="LineNr"> 888 </span>  <span class="Conceal">¦</span> below-screen?:bool <span class="Special">&lt;-</span> greater-or-equal cursor-row, <a href='../081print.mu.html#L782'>screen-height</a>  <span class="Comment"># must be equal, never greater</span>
 <span id="L889" class="LineNr"> 889 </span>  <span class="Conceal">¦</span> <span class="muControl">break-unless</span> below-screen?
 <span id="L890" class="LineNr"> 890 </span><span class="Constant">  </span><span class="Conceal">¦</span><span class="Constant"> &lt;scroll-down&gt;</span>
 <span id="L891" class="LineNr"> 891 </span>  <span class="Conceal">¦</span> cursor-row <span class="Special">&lt;-</span> subtract cursor-row,<span class="Constant"> 1</span>  <span class="Comment"># bring back into screen range</span>
@@ -968,7 +968,7 @@ if ('onhashchange' in window) {
 <span id="L905" class="LineNr"> 905 </span>  <span class="Delimiter">{</span>
 <span id="L906" class="LineNr"> 906 </span>  <span class="Conceal">¦</span> indent-done?:bool <span class="Special">&lt;-</span> greater-or-equal i, indent
 <span id="L907" class="LineNr"> 907 </span>  <span class="Conceal">¦</span> <span class="muControl">break-if</span> indent-done?
-<span id="L908" class="LineNr"> 908 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L203'>insert-at-cursor</a> editor, <span class="Constant">32/space</span>, <a href='../081print.mu.html#L4'>screen</a>
+<span id="L908" class="LineNr"> 908 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L203'>insert-at-cursor</a> editor, <span class="Constant">32/space</span>, <a href='../081print.mu.html#L16'>screen</a>
 <span id="L909" class="LineNr"> 909 </span>  <span class="Conceal">¦</span> i <span class="Special">&lt;-</span> add i,<span class="Constant"> 1</span>
 <span id="L910" class="LineNr"> 910 </span>  <span class="Conceal">¦</span> <span class="muControl">loop</span>
 <span id="L911" class="LineNr"> 911 </span>  <span class="Delimiter">}</span>
@@ -1033,7 +1033,7 @@ if ('onhashchange' in window) {
 <span id="L970" class="LineNr"> 970 </span><span class="Constant">1]</span>
 <span id="L971" class="LineNr"> 971 </span>  ]
 <span id="L972" class="LineNr"> 972 </span>  run [
-<span id="L973" class="LineNr"> 973 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L973" class="LineNr"> 973 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L974" class="LineNr"> 974 </span>  ]
 <span id="L975" class="LineNr"> 975 </span>  screen-should-contain [
 <span id="L976" class="LineNr"> 976 </span>  <span class="Conceal">¦</span><span class="Constant"> .          .</span>
@@ -1048,7 +1048,7 @@ if ('onhashchange' in window) {
 <span id="L985" class="LineNr"> 985 </span>  <span class="Constant">local-scope</span>
 <span id="L986" class="LineNr"> 986 </span>  assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
 <span id="L987" class="LineNr"> 987 </span>  e:&amp;:editor <span class="Special">&lt;-</span> <a href='001-editor.mu.html#L51'>new-editor</a> <span class="Constant">[abcde]</span>, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
-<span id="L988" class="LineNr"> 988 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L4'>screen</a>, e
+<span id="L988" class="LineNr"> 988 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L16'>screen</a>, e
 <span id="L989" class="LineNr"> 989 </span>  screen-should-contain [
 <span id="L990" class="LineNr"> 990 </span>  <span class="Conceal">¦</span><span class="Constant"> .          .</span>
 <span id="L991" class="LineNr"> 991 </span>  <span class="Conceal">¦</span><span class="Constant"> .abcd↩     .</span>
@@ -1060,7 +1060,7 @@ if ('onhashchange' in window) {
 <span id="L997" class="LineNr"> 997 </span>  <span class="Conceal">¦</span> press enter
 <span id="L998" class="LineNr"> 998 </span>  ]
 <span id="L999" class="LineNr"> 999 </span>  run [
-<span id="L1000" class="LineNr">1000 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L1000" class="LineNr">1000 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L1001" class="LineNr">1001 </span>  ]
 <span id="L1002" class="LineNr">1002 </span>  <span class="Comment"># line should be fully cleared</span>
 <span id="L1003" class="LineNr">1003 </span>  screen-should-contain [
@@ -1076,7 +1076,7 @@ if ('onhashchange' in window) {
 <span id="L1013" class="LineNr">1013 </span>  <span class="Constant">local-scope</span>
 <span id="L1014" class="LineNr">1014 </span>  assume-screen <span class="Constant">10/width</span>, <span class="Constant">5/height</span>
 <span id="L1015" class="LineNr">1015 </span>  e:&amp;:editor <span class="Special">&lt;-</span> <a href='001-editor.mu.html#L51'>new-editor</a> <span class="Constant">[abcdef]</span>, <span class="Constant">0/left</span>, <span class="Constant">5/right</span>
-<span id="L1016" class="LineNr">1016 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L4'>screen</a>, e
+<span id="L1016" class="LineNr">1016 </span>  <a href='002-typing.mu.html#L265'>editor-render</a> <a href='../081print.mu.html#L16'>screen</a>, e
 <span id="L1017" class="LineNr">1017 </span>  screen-should-contain [
 <span id="L1018" class="LineNr">1018 </span>  <span class="Conceal">¦</span><span class="Constant"> .          .</span>
 <span id="L1019" class="LineNr">1019 </span>  <span class="Conceal">¦</span><span class="Constant"> .abcd↩     .</span>
@@ -1089,7 +1089,7 @@ if ('onhashchange' in window) {
 <span id="L1026" class="LineNr">1026 </span>  <span class="Conceal">¦</span> press enter
 <span id="L1027" class="LineNr">1027 </span>  ]
 <span id="L1028" class="LineNr">1028 </span>  run [
-<span id="L1029" class="LineNr">1029 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L1029" class="LineNr">1029 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L1030" class="LineNr">1030 </span>  <span class="Conceal">¦</span> 10:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-row:offset</span>
 <span id="L1031" class="LineNr">1031 </span>  <span class="Conceal">¦</span> 11:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-column:offset</span>
 <span id="L1032" class="LineNr">1032 </span>  ]
@@ -1119,7 +1119,7 @@ if ('onhashchange' in window) {
 <span id="L1056" class="LineNr">1056 </span>]
 <span id="L1057" class="LineNr">1057 </span>  ]
 <span id="L1058" class="LineNr">1058 </span>  run [
-<span id="L1059" class="LineNr">1059 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L1059" class="LineNr">1059 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L1060" class="LineNr">1060 </span>  <span class="Conceal">¦</span> 3:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-row:offset</span>
 <span id="L1061" class="LineNr">1061 </span>  <span class="Conceal">¦</span> 4:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-column:offset</span>
 <span id="L1062" class="LineNr">1062 </span>  ]
@@ -1145,7 +1145,7 @@ if ('onhashchange' in window) {
 <span id="L1082" class="LineNr">1082 </span>  <span class="Conceal">¦</span> press<span class="Constant"> 65506</span>  <span class="Comment"># end paste</span>
 <span id="L1083" class="LineNr">1083 </span>  ]
 <span id="L1084" class="LineNr">1084 </span>  run [
-<span id="L1085" class="LineNr">1085 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L4'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
+<span id="L1085" class="LineNr">1085 </span>  <span class="Conceal">¦</span> <a href='002-typing.mu.html#L16'>editor-event-loop</a> <a href='../081print.mu.html#L16'>screen</a>, <a href='../084console.mu.html#L23'>console</a>, e
 <span id="L1086" class="LineNr">1086 </span>  <span class="Conceal">¦</span> 3:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-row:offset</span>
 <span id="L1087" class="LineNr">1087 </span>  <span class="Conceal">¦</span> 4:num/<span class="Special">raw</span> <span class="Special">&lt;-</span> get *e, <span class="Constant">cursor-column:offset</span>
 <span id="L1088" class="LineNr">1088 </span>  ]
@@ -1176,10 +1176,10 @@ if ('onhashchange' in window) {
 <span id="L1113" class="LineNr">1113 </span>
 <span id="L1114" class="LineNr">1114 </span><span class="SalientComment">## helpers</span>
 <span id="L1115" class="LineNr">1115 </span>
-<span id="L1116" class="LineNr">1116 </span><span class="muRecipe">def</span> <a href='002-typing.mu.html#L1116'>draw-horizontal</a> <a href='../081print.mu.html#L4'>screen</a>:&amp;:<a href='../081print.mu.html#L4'>screen</a>, row:num, x:num, right:num<span class="muRecipe"> -&gt; </span><a href='../081print.mu.html#L4'>screen</a>:&amp;:<a href='../081print.mu.html#L4'>screen</a> [
+<span id="L1116" class="LineNr">1116 </span><span class="muRecipe">def</span> <a href='002-typing.mu.html#L1116'>draw-horizontal</a> <a href='../081print.mu.html#L16'>screen</a>:&amp;:<a href='../081print.mu.html#L16'>screen</a>, row:num, x:num, right:num<span class="muRecipe"> -&gt; </span><a href='../081print.mu.html#L16'>screen</a>:&amp;:<a href='../081print.mu.html#L16'>screen</a> [
 <span id="L1117" class="LineNr">1117 </span>  <span class="Constant">local-scope</span>
 <span id="L1118" class="LineNr">1118 </span>  <span class="Constant">load-ingredients</span>
-<span id="L1119" class="LineNr">1119 </span>  height:num <span class="Special">&lt;-</span> <a href='../081print.mu.html#L748'>screen-height</a> <a href='../081print.mu.html#L4'>screen</a>
+<span id="L1119" class="LineNr">1119 </span>  height:num <span class="Special">&lt;-</span> <a href='../081print.mu.html#L782'>screen-height</a> <a href='../081print.mu.html#L16'>screen</a>
 <span id="L1120" class="LineNr">1120 </span>  past-bottom?:bool <span class="Special">&lt;-</span> greater-or-equal row, height
 <span id="L1121" class="LineNr">1121 </span>  <span class="muControl">return-if</span> past-bottom?
 <span id="L1122" class="LineNr">1122 </span>  style:char, style-found?:bool <span class="Special">&lt;-</span> <span class="Constant">next-ingredient</span>
@@ -1198,11 +1198,11 @@ if ('onhashchange' in window) {
 <span id="L1135" class="LineNr">1135 </span>  <span class="Conceal">¦</span> <span class="muControl">break-if</span> bg-color-found?
 <span id="L1136" class="LineNr">1136 </span>  <span class="Conceal">¦</span> bg-color <span class="Special">&lt;-</span> copy <span class="Constant">0/black</span>
 <span id="L1137" class="LineNr">1137 </span>  <span class="Delimiter">}</span>
-<span id="L1138" class="LineNr">1138 </span>  <a href='../081print.mu.html#L4'>screen</a> <span class="Special">&lt;-</span> move-cursor <a href='../081print.mu.html#L4'>screen</a>, row, x
+<span id="L1138" class="LineNr">1138 </span>  <a href='../081print.mu.html#L16'>screen</a> <span class="Special">&lt;-</span> move-cursor <a href='../081print.mu.html#L16'>screen</a>, row, x
 <span id="L1139" class="LineNr">1139 </span>  <span class="Delimiter">{</span>
 <span id="L1140" class="LineNr">1140 </span>  <span class="Conceal">¦</span> continue?:bool <span class="Special">&lt;-</span> lesser-or-equal x, right  <span class="Comment"># right is inclusive, to match editor semantics</span>
 <span id="L1141" class="LineNr">1141 </span>  <span class="Conceal">¦</span> <span class="muControl">break-unless</span> continue?
-<span id="L1142" class="LineNr">1142 </span>  <span class="Conceal">¦</span> print <a href='../081print.mu.html#L4'>screen</a>, style, color, bg-color
+<span id="L1142" class="LineNr">1142 </span>  <span class="Conceal">¦</span> print <a href='../081print.mu.html#L16'>screen</a>, style, color, bg-color
 <span id="L1143" class="LineNr">1143 </span>  <span class="Conceal">¦</span> x <span class="Special">&lt;-</span> add x,<span class="Constant"> 1</span>
 <span id="L1144" class="LineNr">1144 </span>  <span class="Conceal">¦</span> <span class="muControl">loop</span>
 <span id="L1145" class="LineNr">1145 </span>  <span class="Delimiter">}</span>