diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2017-05-10 16:37:35 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2017-05-10 16:37:35 -0700 |
commit | ff96aace6d9fd99fcf8bdacf2c663dbf4451367c (patch) | |
tree | e4535e33b7c39f67efc9f34ca94efad42fcddca5 /edit | |
parent | 45bcfcfe10e6a2fbc8aa4a84f60ca7d39af14031 (diff) | |
download | mu-ff96aace6d9fd99fcf8bdacf2c663dbf4451367c.tar.gz |
3850
Bugfix: writes out of bounds used to be skipped, but started clobbering the screen on commit 3824.
Diffstat (limited to 'edit')
-rw-r--r-- | edit/002-typing.mu | 7 | ||||
-rw-r--r-- | edit/004-programming-environment.mu | 14 | ||||
-rw-r--r-- | edit/005-sandbox.mu | 23 |
3 files changed, 42 insertions, 2 deletions
diff --git a/edit/002-typing.mu b/edit/002-typing.mu index 4f704f0d..d5120f2f 100644 --- a/edit/002-typing.mu +++ b/edit/002-typing.mu @@ -266,10 +266,17 @@ def editor-render screen:&:screen, editor:&:editor -> screen:&:screen, editor:&: left:num <- get *editor, left:offset right:num <- get *editor, right:offset row:num, column:num <- render screen, editor + screen-height:num <- screen-height screen + space-left?:bool <- lesser-than row, screen-height + return-unless space-left? clear-line-until screen, right row <- add row, 1 + space-left?:bool <- lesser-than row, screen-height + return-unless space-left? draw-horizontal screen, row, left, right, 9480/horizontal-dotted row <- add row, 1 + space-left?:bool <- lesser-than row, screen-height + return-unless space-left? clear-screen-from screen, row, left, left, right ] diff --git a/edit/004-programming-environment.mu b/edit/004-programming-environment.mu index 435495f4..5a1e84c7 100644 --- a/edit/004-programming-environment.mu +++ b/edit/004-programming-environment.mu @@ -418,12 +418,19 @@ def render-recipes screen:&:screen, env:&:environment, {render-editor: (recipe ( left:num <- get *recipes, left:offset right:num <- get *recipes, right:offset row:num, column:num, screen <- call render-editor, screen, recipes + screen-height:num <- screen-height screen + space-left?:bool <- lesser-than row, screen-height + return-unless space-left? clear-line-until screen, right row <- add row, 1 + space-left? <- lesser-than row, screen-height + return-unless space-left? <render-recipe-components-end> # draw dotted line after recipes draw-horizontal screen, row, left, right, 9480/horizontal-dotted row <- add row, 1 + space-left? <- lesser-than row, screen-height + return-unless space-left? clear-screen-from screen, row, left, left, right ] @@ -435,11 +442,18 @@ def render-sandbox-side screen:&:screen, env:&:environment, {render-editor: (rec left:num <- get *current-sandbox, left:offset right:num <- get *current-sandbox, right:offset row:num, column:num, screen, current-sandbox <- call render-editor, screen, current-sandbox + screen-height:num <- screen-height screen + space-left?:bool <- lesser-than row, screen-height + return-unless space-left? clear-line-until screen, right row <- add row, 1 + space-left? <- lesser-than row, screen-height + return-unless space-left? # draw solid line after code (you'll see why in later layers) draw-horizontal screen, row, left, right row <- add row, 1 + space-left? <- lesser-than row, screen-height + return-unless space-left? clear-screen-from screen, row, left, left, right ] diff --git a/edit/005-sandbox.mu b/edit/005-sandbox.mu index 2e16e05b..fed2c806 100644 --- a/edit/005-sandbox.mu +++ b/edit/005-sandbox.mu @@ -245,19 +245,26 @@ def! render-sandbox-side screen:&:screen, env:&:environment, {render-editor: (re row:num, column:num <- copy 1, 0 left:num <- get *current-sandbox, left:offset right:num <- get *current-sandbox, right:offset + screen-height:num <- screen-height screen # render sandbox editor render-from:num <- get *env, render-from:offset { render-current-sandbox?:bool <- equal render-from, -1 break-unless render-current-sandbox? row, column, screen, current-sandbox <- call render-editor, screen, current-sandbox + space-left?:bool <- lesser-than row, screen-height + return-unless space-left? clear-screen-from screen, row, column, left, right row <- add row, 1 + space-left? <- lesser-than row, screen-height + return-unless space-left? } # render sandboxes draw-horizontal screen, row, left, right sandbox:&:sandbox <- get *env, sandbox:offset row, screen <- render-sandboxes screen, sandbox, left, right, row, render-from + space-left? <- lesser-than row, screen-height + return-unless space-left? clear-rest-of-screen screen, row, left, right ] @@ -273,16 +280,22 @@ def render-sandboxes screen:&:screen, sandbox:&:sandbox, left:num, right:num, ro break-if hidden? # render sandbox menu row <- add row, 1 + space-left?:bool <- lesser-than row, screen-height + return-unless space-left? screen <- move-cursor screen, row, left screen <- render-sandbox-menu screen, idx, left, right # save menu row so we can detect clicks to it later *sandbox <- put *sandbox, starting-row-on-screen:offset, row # render sandbox contents row <- add row, 1 + space-left? <- lesser-than row, screen-height + return-unless space-left? screen <- move-cursor screen, row, left sandbox-data:text <- get *sandbox, data:offset row, screen <- render-code screen, sandbox-data, left, right, row *sandbox <- put *sandbox, code-ending-row-on-screen:offset, row + space-left? <- lesser-than row, screen-height + return-unless space-left? # render sandbox warnings, screen or response, in that order sandbox-response:text <- get *sandbox, response:offset <render-sandbox-results> @@ -298,8 +311,8 @@ def render-sandboxes screen:&:screen, sandbox:&:sandbox, left:num, right:num, ro row, screen <- render-text screen, sandbox-response, left, right, 245/grey, row } +render-sandbox-end - at-bottom?:bool <- greater-or-equal row, screen-height - return-if at-bottom? + space-left? <- lesser-than row, screen-height + return-unless space-left? # draw solid line after sandbox draw-horizontal screen, row, left, right } @@ -311,6 +324,8 @@ def render-sandboxes screen:&:screen, sandbox:&:sandbox, left:num, right:num, ro <end-render-sandbox-reset-hidden> } # draw next sandbox + space-left? <- lesser-than row, screen-height + return-unless space-left? next-sandbox:&:sandbox <- get *sandbox, next-sandbox:offset next-idx:num <- add idx, 1 row, screen <- render-sandboxes screen, next-sandbox, left, right, row, render-from, next-idx @@ -411,6 +426,8 @@ def render-text screen:&:screen, s:text, left:num, right:num, color:num, row:num column <- add column, 1 loop } + space-left?:bool <- lesser-than row, screen-height + return-unless space-left? was-at-left?:bool <- equal column, left clear-line-until screen, right { @@ -491,6 +508,8 @@ def render-code screen:&:screen, s:text, left:num, right:num, row:num -> row:num column <- add column, 1 loop } + space-left?:bool <- lesser-than row, screen-height + return-unless space-left? was-at-left?:bool <- equal column, left clear-line-until screen, right { |