From 9baf76ec488a0216db746db8e89c31a1821e3200 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Sun, 27 Nov 2016 12:51:40 -0800 Subject: 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. --- edit/002-typing.mu | 63 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 33 insertions(+), 30 deletions(-) (limited to 'edit/002-typing.mu') 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 [ 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 [ 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 -- cgit 1.4.1-2-gfad0