From 62a390ca0a27daa80ce4b6b17934d8d067db8631 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Tue, 15 Dec 2015 09:33:56 -0800 Subject: support immutability checks in sandbox/ app --- sandbox/001-editor.mu | 2 +- sandbox/002-typing.mu | 8 ++++---- sandbox/003-shortcuts.mu | 14 ++++++++------ sandbox/004-programming-environment.mu | 6 +++--- sandbox/005-sandbox.mu | 2 +- sandbox/006-sandbox-edit.mu | 2 +- sandbox/007-sandbox-delete.mu | 2 +- 7 files changed, 19 insertions(+), 17 deletions(-) (limited to 'sandbox') diff --git a/sandbox/001-editor.mu b/sandbox/001-editor.mu index 56c98d81..4ef9be36 100644 --- a/sandbox/001-editor.mu +++ b/sandbox/001-editor.mu @@ -252,7 +252,7 @@ recipe clear-screen-from screen:address:screen, row:number, column:number, left: reply screen/same-as-ingredient:0 ] -recipe clear-rest-of-screen screen:address:screen, row:number, left:number, right:number [ +recipe clear-rest-of-screen screen:address:screen, row:number, left:number, right:number -> screen:address:screen [ local-scope load-ingredients row <- add row, 1 diff --git a/sandbox/002-typing.mu b/sandbox/002-typing.mu index 2b446101..037c222b 100644 --- a/sandbox/002-typing.mu +++ b/sandbox/002-typing.mu @@ -11,7 +11,7 @@ recipe! main text:address:array:character [ close-console ] -recipe editor-event-loop screen:address:screen, console:address:console, editor:address:editor-data [ +recipe editor-event-loop screen:address:screen, console:address:console, editor:address:editor-data -> screen:address:screen, console:address:console, editor:address:editor-data [ local-scope load-ingredients { @@ -45,7 +45,7 @@ recipe editor-event-loop screen:address:screen, console:address:console, editor: ] # process click, return if it was on current editor -recipe move-cursor-in-editor screen:address:screen, editor:address:editor-data, t:touch-event -> in-focus?:boolean [ +recipe move-cursor-in-editor screen:address:screen, editor:address:editor-data, t:touch-event -> in-focus?:boolean, editor:address:editor-data [ local-scope load-ingredients reply-unless editor, 0/false @@ -259,7 +259,7 @@ recipe insert-at-cursor editor:address:editor-data, c:character, screen:address: ] # helper for tests -recipe editor-render screen:address:screen, editor:address:editor-data -> screen:address:screen [ +recipe editor-render screen:address:screen, editor:address:editor-data -> screen:address:screen, editor:address:editor-data [ local-scope load-ingredients left:number <- get *editor, left:offset @@ -1012,7 +1012,7 @@ after [ ## helpers -recipe draw-horizontal screen:address:screen, row:number, x:number, right:number [ +recipe draw-horizontal screen:address:screen, row:number, x:number, right:number -> screen:address:screen [ local-scope load-ingredients style:character, style-found?:boolean <- next-ingredient diff --git a/sandbox/003-shortcuts.mu b/sandbox/003-shortcuts.mu index b3676efb..79d53b2a 100644 --- a/sandbox/003-shortcuts.mu +++ b/sandbox/003-shortcuts.mu @@ -84,6 +84,7 @@ recipe delete-before-cursor editor:address:editor-data, screen:address:screen -> local-scope load-ingredients before-cursor:address:address:duplex-list:character <- get-address *editor, before-cursor:offset + data:address:duplex-list:character <- get *editor, data:offset # if at start of text (before-cursor at ยง sentinel), return prev:address:duplex-list:character <- prev *before-cursor go-render?, backspaced-cell <- copy 0/no-more-render, 0/nothing-deleted @@ -92,7 +93,7 @@ recipe delete-before-cursor editor:address:editor-data, screen:address:screen -> original-row:number <- get *editor, cursor-row:offset editor, scroll?:boolean <- move-cursor-coordinates-left editor backspaced-cell:address:duplex-list:character <- copy *before-cursor - remove *before-cursor # will also neatly trim next/prev pointers in backspaced-cell/*before-cursor + data <- remove *before-cursor, data # will also neatly trim next/prev pointers in backspaced-cell/*before-cursor *before-cursor <- copy prev go-render? <- copy 1/true reply-if scroll? @@ -333,11 +334,12 @@ recipe delete-at-cursor editor:address:editor-data, screen:address:screen -> edi local-scope load-ingredients before-cursor:address:address:duplex-list:character <- get-address *editor, before-cursor:offset + data:address:duplex-list:character <- get *editor, data:offset deleted-cell:address:duplex-list:character <- next *before-cursor go-render? <- copy 0/false reply-unless deleted-cell currc:character <- get *deleted-cell, value:offset - remove deleted-cell + data <- remove deleted-cell, data deleted-newline?:boolean <- equal currc, 10/newline go-render? <- copy 1/true reply-if deleted-newline? @@ -1244,7 +1246,7 @@ after [ } ] -recipe move-to-start-of-line editor:address:editor-data [ +recipe move-to-start-of-line editor:address:editor-data -> editor:address:editor-data [ local-scope load-ingredients # update cursor column @@ -1415,7 +1417,7 @@ after [ } ] -recipe move-to-end-of-line editor:address:editor-data [ +recipe move-to-end-of-line editor:address:editor-data -> editor:address:editor-data [ local-scope load-ingredients before-cursor:address:address:duplex-list:character <- get-address *editor, before-cursor:offset @@ -1545,7 +1547,7 @@ after [ } ] -recipe delete-to-start-of-line editor:address:editor-data -> result:address:duplex-list:character [ +recipe delete-to-start-of-line editor:address:editor-data -> result:address:duplex-list:character, editor:address:editor-data [ local-scope load-ingredients # compute range to delete @@ -1679,7 +1681,7 @@ after [ } ] -recipe delete-to-end-of-line editor:address:editor-data -> result:address:duplex-list:character [ +recipe delete-to-end-of-line editor:address:editor-data -> result:address:duplex-list:character, editor:address:editor-data [ local-scope load-ingredients # compute range to delete diff --git a/sandbox/004-programming-environment.mu b/sandbox/004-programming-environment.mu index c6742397..1535e75c 100644 --- a/sandbox/004-programming-environment.mu +++ b/sandbox/004-programming-environment.mu @@ -19,7 +19,7 @@ container programming-environment-data [ current-sandbox:address:editor-data ] -recipe new-programming-environment screen:address:screen, initial-sandbox-contents:address:array:character -> result:address:programming-environment-data [ +recipe new-programming-environment screen:address:screen, initial-sandbox-contents:address:array:character -> result:address:programming-environment-data, screen:address:screen [ local-scope load-ingredients width:number <- screen-width screen @@ -38,7 +38,7 @@ recipe new-programming-environment screen:address:screen, initial-sandbox-conten *current-sandbox <- new-editor initial-sandbox-contents, screen, 0, width/right ] -recipe event-loop screen:address:screen, console:address:console, env:address:programming-environment-data [ +recipe event-loop screen:address:screen, console:address:console, env:address:programming-environment-data -> screen:address:screen, console:address:console, env:address:programming-environment-data [ local-scope load-ingredients current-sandbox:address:editor-data <- get *env, current-sandbox:offset @@ -135,7 +135,7 @@ recipe event-loop screen:address:screen, console:address:console, env:address:pr } ] -recipe resize screen:address:screen, env:address:programming-environment-data -> env:address:programming-environment-data [ +recipe resize screen:address:screen, env:address:programming-environment-data -> env:address:programming-environment-data, screen:address:screen [ local-scope load-ingredients clear-screen screen # update screen dimensions diff --git a/sandbox/005-sandbox.mu b/sandbox/005-sandbox.mu index da5bd54c..db0a195b 100644 --- a/sandbox/005-sandbox.mu +++ b/sandbox/005-sandbox.mu @@ -222,7 +222,7 @@ recipe! render-sandbox-side screen:address:screen, env:address:programming-envir clear-rest-of-screen screen, row, left, left, right ] -recipe render-sandboxes screen:address:screen, sandbox:address:sandbox-data, left:number, right:number, row:number -> row:number, screen:address:screen [ +recipe render-sandboxes screen:address:screen, sandbox:address:sandbox-data, left:number, right:number, row:number -> row:number, screen:address:screen, sandbox:address:sandbox-data [ local-scope load-ingredients env:address:programming-environment-data, _/optional <- next-ingredient diff --git a/sandbox/006-sandbox-edit.mu b/sandbox/006-sandbox-edit.mu index e021b961..83257df0 100644 --- a/sandbox/006-sandbox-edit.mu +++ b/sandbox/006-sandbox-edit.mu @@ -98,7 +98,7 @@ recipe empty-editor? editor:address:editor-data -> result:boolean [ result <- not first ] -recipe extract-sandbox env:address:programming-environment-data, click-row:number -> result:address:sandbox-data [ +recipe extract-sandbox env:address:programming-environment-data, click-row:number -> result:address:sandbox-data, env:address:programming-environment-data [ local-scope load-ingredients # assert click-row >= sandbox.starting-row-on-screen diff --git a/sandbox/007-sandbox-delete.mu b/sandbox/007-sandbox-delete.mu index 85d7af28..b0b6f4ee 100644 --- a/sandbox/007-sandbox-delete.mu +++ b/sandbox/007-sandbox-delete.mu @@ -76,7 +76,7 @@ after [ } ] -recipe delete-sandbox t:touch-event, env:address:programming-environment-data -> was-delete?:boolean [ +recipe delete-sandbox t:touch-event, env:address:programming-environment-data -> was-delete?:boolean, env:address:programming-environment-data [ local-scope load-ingredients click-column:number <- get t, column:offset -- cgit 1.4.1-2-gfad0