about summary refs log tree commit diff stats
path: root/edit/002-typing.mu
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 /edit/002-typing.mu
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.
Diffstat (limited to 'edit/002-typing.mu')
-rw-r--r--edit/002-typing.mu63
1 files changed, 33 insertions, 30 deletions
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