diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2015-12-28 08:44:36 -0800 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2015-12-28 08:44:36 -0800 |
commit | bbe0801ab1e0b0859c3529ed33fde40b139addd6 (patch) | |
tree | fa534bbbb3b345d154432746cd585f9262bd80cd /edit | |
parent | e94453100dda87a42dee36b2671f850ab6824f54 (diff) | |
download | mu-bbe0801ab1e0b0859c3529ed33fde40b139addd6.tar.gz |
2548 - teach 'print' to print integers
Still can't print non-integer numbers, so this is a bit hacky. The big consequence is that you can't print literal characters anymore because of our rules about how we pick which variant to statically dispatch to. You have to save to a character variable first. Maybe I can add an annotation to literals..
Diffstat (limited to 'edit')
-rw-r--r-- | edit/001-editor.mu | 6 | ||||
-rw-r--r-- | edit/003-shortcuts.mu | 6 | ||||
-rw-r--r-- | edit/004-programming-environment.mu | 24 | ||||
-rw-r--r-- | edit/005-sandbox.mu | 15 | ||||
-rw-r--r-- | edit/008-sandbox-test.mu | 3 | ||||
-rw-r--r-- | edit/009-sandbox-trace.mu | 5 |
6 files changed, 38 insertions, 21 deletions
diff --git a/edit/001-editor.mu b/edit/001-editor.mu index 4ef9be36..fd44d493 100644 --- a/edit/001-editor.mu +++ b/edit/001-editor.mu @@ -193,7 +193,8 @@ recipe render screen:address:screen, editor:address:editor-data -> last-row:numb at-right?:boolean <- equal column, right break-unless at-right? # print wrap icon - print screen, 8617/loop-back-to-left, 245/grey + wrap-icon:character <- copy 8617/loop-back-to-left + print screen, wrap-icon, 245/grey column <- copy left row <- add row, 1 screen <- move-cursor screen, row, column @@ -227,10 +228,11 @@ recipe render screen:address:screen, editor:address:editor-data -> last-row:numb recipe clear-line-delimited screen:address:screen, column:number, right:number -> screen:address:screen [ local-scope load-ingredients + space:character <- copy 32/space { done?:boolean <- greater-than column, right break-if done? - screen <- print screen, 32/space + screen <- print screen, space column <- add column, 1 loop } diff --git a/edit/003-shortcuts.mu b/edit/003-shortcuts.mu index 79d53b2a..feab04ea 100644 --- a/edit/003-shortcuts.mu +++ b/edit/003-shortcuts.mu @@ -125,7 +125,8 @@ recipe delete-before-cursor editor:address:editor-data, screen:address:screen -> loop } # we're guaranteed not to be at the right margin - screen <- print screen, 32/space + space:character <- copy 32/space + screen <- print screen, space go-render? <- copy 0/false ] @@ -366,7 +367,8 @@ recipe delete-at-cursor editor:address:editor-data, screen:address:screen -> edi loop } # we're guaranteed not to be at the right margin - screen <- print screen, 32/space + space:character <- copy 32/space + screen <- print screen, space go-render? <- copy 0/false ] diff --git a/edit/004-programming-environment.mu b/edit/004-programming-environment.mu index 44a812c5..7ed6376e 100644 --- a/edit/004-programming-environment.mu +++ b/edit/004-programming-environment.mu @@ -267,7 +267,8 @@ scenario edit-multiple-editors [ ] # show the cursor at the right window run [ - print screen:address:screen, 9251/␣/cursor + 8:character/cursor <- copy 9251/␣ + print screen:address:screen, 8:character/cursor ] screen-should-contain [ . run (F4) . @@ -307,7 +308,8 @@ scenario editor-in-focus-keeps-cursor [ assume-console [] run [ event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data - print screen:address:screen, 9251/␣/cursor + 4:character/cursor <- copy 9251/␣ + print screen:address:screen, 4:character/cursor ] # is cursor at the right place? screen-should-contain [ @@ -322,7 +324,8 @@ scenario editor-in-focus-keeps-cursor [ ] run [ event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data - print screen:address:screen, 9251/␣/cursor + 4:character/cursor <- copy 9251/␣ + print screen:address:screen, 4:character/cursor ] # cursor should still be right screen-should-contain [ @@ -356,7 +359,8 @@ def] ] run [ event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data - print screen:address:screen, 9251/␣/cursor + 4:character/cursor <- copy 9251/␣ + print screen:address:screen, 4:character/cursor ] # cursor moves to end of old line screen-should-contain [ @@ -473,7 +477,8 @@ recipe render screen:address:screen, s:address:array:character, left:number, rig at-right?:boolean <- equal column, right break-unless at-right? # print wrap icon - print screen, 8617/loop-back-to-left, 245/grey + wrap-icon:character <- copy 8617/loop-back-to-left + print screen, wrap-icon, 245/grey column <- copy left row <- add row, 1 screen <- move-cursor screen, row, column @@ -488,7 +493,8 @@ recipe render screen:address:screen, s:address:array:character, left:number, rig { done?:boolean <- greater-than column, right break-if done? - print screen, 32/space + space:character <- copy 32/space + print screen, space column <- add column, 1 loop } @@ -534,7 +540,8 @@ recipe render-code screen:address:screen, s:address:array:character, left:number at-right?:boolean <- equal column, right break-unless at-right? # print wrap icon - print screen, 8617/loop-back-to-left, 245/grey + wrap-icon:character <- copy 8617/loop-back-to-left + print screen, wrap-icon, 245/grey column <- copy left row <- add row, 1 screen <- move-cursor screen, row, column @@ -549,7 +556,8 @@ recipe render-code screen:address:screen, s:address:array:character, left:number { done?:boolean <- greater-than column, right break-if done? - print screen, 32/space + space:character <- copy 32/space + print screen, space column <- add column, 1 loop } diff --git a/edit/005-sandbox.mu b/edit/005-sandbox.mu index a8a4c5a3..3929fb76 100644 --- a/edit/005-sandbox.mu +++ b/edit/005-sandbox.mu @@ -253,7 +253,8 @@ recipe render-sandboxes screen:address:screen, sandbox:address:sandbox-data, lef row <- add row, 1 screen <- move-cursor screen, row, left clear-line-delimited screen, left, right - print screen, 120/x, 245/grey + delete-icon:character <- copy 120/x + print screen, delete-icon, 245/grey # save menu row so we can detect clicks to it later starting-row:address:number <- get-address *sandbox, starting-row-on-screen:offset *starting-row <- copy row @@ -349,9 +350,11 @@ recipe render-screen screen:address:screen, sandbox-screen:address:screen, left: column <- copy left screen <- move-cursor screen, row, column # initial leader for each row: two spaces and a '.' - print screen, 32/space, 245/grey - print screen, 32/space, 245/grey - print screen, 46/full-stop, 245/grey + space:character <- copy 32/space + print screen, space, 245/grey + print screen, space, 245/grey + full-stop:character <- copy 46/period + print screen, full-stop, 245/grey column <- add left, 3 { # print row @@ -372,13 +375,13 @@ recipe render-screen screen:address:screen, sandbox-screen:address:screen, left: loop } # print final '.' - print screen, 46/full-stop, 245/grey + print screen, full-stop, 245/grey column <- add column, 1 { # clear rest of current line line-done?:boolean <- greater-than column, right break-if line-done? - print screen, 32/space + print screen, space column <- add column, 1 loop } diff --git a/edit/008-sandbox-test.mu b/edit/008-sandbox-test.mu index 0ba1941e..77cac2ce 100644 --- a/edit/008-sandbox-test.mu +++ b/edit/008-sandbox-test.mu @@ -45,7 +45,8 @@ recipe foo [ ] # cursor should remain unmoved run [ - print screen:address:screen, 9251/␣/cursor + 4:character/cursor <- copy 9251/␣ + print screen:address:screen, 4:character/cursor ] screen-should-contain [ . run (F4) . diff --git a/edit/009-sandbox-trace.mu b/edit/009-sandbox-trace.mu index f3e78701..03bde749 100644 --- a/edit/009-sandbox-trace.mu +++ b/edit/009-sandbox-trace.mu @@ -30,7 +30,8 @@ recipe foo [ ] run [ event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data - print screen:address:screen, 9251/␣/cursor + 4:character/cursor-icon <- copy 9251/␣ + print screen:address:screen, 4:character/cursor-icon ] # trace now printed and cursor shouldn't have budged screen-should-contain [ @@ -59,7 +60,7 @@ recipe foo [ ] run [ event-loop screen:address:screen, console:address:console, 3:address:programming-environment-data - print screen:address:screen, 9251/␣/cursor + print screen:address:screen, 4:character/cursor-icon ] # trace hidden again screen-should-contain [ |