about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-07-17 18:51:14 -0700
committerKartik K. Agaram <vc@akkartik.com>2015-07-17 18:51:14 -0700
commitb75300444bd320a45d1366b093177c538d35c0a6 (patch)
tree862a44688e412ebcd74281f0fa867e387e09015d
parente52972cb0aaa749e901b518c0b594dd14d687fa6 (diff)
downloadmu-b75300444bd320a45d1366b093177c538d35c0a6.tar.gz
1808 - helper to print newlines during debugging
The recent session makes me weary of deleting comment counts from inside
strings, and the newlines everywhere take up vertical space. Considered
println like pascal/ruby, but I'd like something I can add/remove at the
end of existing prints. So this hack for $print.
-rw-r--r--029debug.cc5
-rw-r--r--060string.mu35
-rw-r--r--061channel.mu14
-rw-r--r--071print.mu18
-rw-r--r--chessboard.mu82
-rw-r--r--edit.mu36
6 files changed, 54 insertions, 136 deletions
diff --git a/029debug.cc b/029debug.cc
index e185a314..753375cc 100644
--- a/029debug.cc
+++ b/029debug.cc
@@ -9,7 +9,10 @@ case _PRINT: {
   for (long long int i = 0; i < SIZE(ingredients); ++i) {
     if (is_literal(current_instruction().ingredients.at(i))) {
       trace(Primitive_recipe_depth, "run") << "$print: " << current_instruction().ingredients.at(i).name;
-      cout << current_instruction().ingredients.at(i).name;
+      if (has_property(current_instruction().ingredients.at(i), "newline"))
+        cout << '\n';
+      else
+        cout << current_instruction().ingredients.at(i).name;
     }
     else {
       for (long long int j = 0; j < SIZE(ingredients.at(i)); ++j) {
diff --git a/060string.mu b/060string.mu
index 6cfbc318..74db7fe1 100644
--- a/060string.mu
+++ b/060string.mu
@@ -105,8 +105,7 @@ container buffer [
 
 recipe new-buffer [
   local-scope
-#?   $print default-space:address:array:location, [
-#? ]
+#?   $print default-space:address:array:location, 10:literal/newline
   result:address:buffer <- new buffer:type
   len:address:number <- get-address result:address:buffer/deref, length:offset
   len:address:number/deref <- copy 0:literal
@@ -114,8 +113,7 @@ recipe new-buffer [
   capacity:number, found?:boolean <- next-ingredient
   assert found?:boolean, [new-buffer must get a capacity argument]
   s:address:address:array:character/deref <- new character:type, capacity:number
-#?   $print s:address:address:array:character/deref, [
-#? ]
+#?   $print s:address:address:array:character/deref, 10:literal/newline
   reply result:address:buffer
 ]
 
@@ -174,13 +172,10 @@ recipe buffer-append [
     in:address:buffer <- grow-buffer in:address:buffer
   }
   s:address:array:character <- get in:address:buffer/deref, data:offset
-#?   $print [array underlying buf: ], s:address:array:character, [ 
-#? ] #? 1
-#?   $print [index: ], len:address:number/deref, [ 
-#? ] #? 1
+#?   $print [array underlying buf: ], s:address:array:character, 10:literal/newline
+#?   $print [index: ], len:address:number/deref, 10:literal/newline
   dest:address:character <- index-address s:address:array:character/deref, len:address:number/deref
-#?   $print [storing ], c:character, [ in ], dest:address:character, [ 
-#? ] #? 1
+#?   $print [storing ], c:character, [ in ], dest:address:character, 10:literal/newline
   dest:address:character/deref <- copy c:character
   len:address:number/deref <- add len:address:number/deref, 1:literal
   reply in:address:buffer/same-as-ingredient:0
@@ -196,20 +191,6 @@ scenario buffer-append-works [
     x:address:buffer <- buffer-append x:address:buffer, 99:literal  # 'c'
     s2:address:array:character <- get x:address:buffer/deref, data:offset
     1:boolean/raw <- equal s1:address:array:character, s2:address:array:character
-#?     $print s2:address:array:character, [
-#? ]
-#?     $print 1060:number/raw, [
-#? ]
-#?     $print 1061:number/raw, [
-#? ]
-#?     $print 1062:number/raw, [
-#? ]
-#?     $print 1063:number/raw, [
-#? ]
-#?     $print 1064:number/raw, [
-#? ]
-#?     $print 1065:number/raw, [
-#? ]
     2:array:character/raw <- copy s2:address:array:character/deref
     +buffer-filled
     x:address:buffer <- buffer-append x:address:buffer, 100:literal  # 'd'
@@ -321,8 +302,7 @@ recipe buffer-to-array [
     reply 0:literal
   }
   len:number <- get in:address:buffer/deref, length:offset
-#?   $print [size ], len:number, [ 
-#? ] #? 1
+#?   $print [size ], len:number, 10:literal/newline
   s:address:array:character <- get in:address:buffer/deref, data:offset
   # we can't just return s because it is usually the wrong length
   result:address:array:character <- new character:type, len:number
@@ -448,8 +428,7 @@ recipe interpolate [
     result-len:number <- subtract result-len:number, 1:literal
     loop
   }
-#?   $print tem-len:number, [ ], $result-len:number, [ 
-#? ] #? 1
+#?   $print tem-len:number, [ ], $result-len:number, 10:literal/newline
   rewind-ingredients
   _ <- next-ingredient  # skip template
   # result = new array:character[result-len]
diff --git a/061channel.mu b/061channel.mu
index 9f86ba2d..2a839898 100644
--- a/061channel.mu
+++ b/061channel.mu
@@ -298,25 +298,22 @@ recipe buffer-lines [
         break-unless backspace?:boolean
         # drop previous character
 #?         close-console #? 2
-#?         $print [backspace! #? 1
+#?         $print [backspace!
 #? ] #? 1
         {
           buffer-length:address:number <- get-address line:address:buffer/deref, length:offset
           buffer-empty?:boolean <- equal buffer-length:address:number/deref, 0:literal
           break-if buffer-empty?:boolean
-#?           $print [before: ], buffer-length:address:number/deref, [ 
-#? ] #? 1
+#?           $print [before: ], buffer-length:address:number/deref, 10:literal/newline
           buffer-length:address:number/deref <- subtract buffer-length:address:number/deref, 1:literal
-#?           $print [after: ], buffer-length:address:number/deref, [ 
-#? ] #? 1
+#?           $print [after: ], buffer-length:address:number/deref, 10:literal/newline
         }
 #?         $exit #? 2
         # and don't append this one
         loop +next-character:label
       }
       # append anything else
-#?       $print [buffer-lines: appending ], c:character, [ 
-#? ]
+#?       $print [buffer-lines: appending ], c:character, 10:literal/newline
       line:address:buffer <- buffer-append line:address:buffer, c:character
       line-done?:boolean <- equal c:character, 10:literal/newline
       break-if line-done?:boolean
@@ -337,8 +334,7 @@ recipe buffer-lines [
       break-if done?:boolean
       c:character <- index line-contents:address:array:character/deref, i:number
       out:address:channel <- write out:address:channel, c:character
-#?       $print [writing ], i:number, [: ], c:character, [ 
-#? ] #? 1
+#?       $print [writing ], i:number, [: ], c:character, 10:literal/newline
       i:number <- add i:number, 1:literal
       loop
     }
diff --git a/071print.mu b/071print.mu
index 818c95f5..b970b02e 100644
--- a/071print.mu
+++ b/071print.mu
@@ -21,8 +21,7 @@ recipe new-fake-screen [
   width:address:number/deref <- next-ingredient
   height:address:number <- get-address result:address:screen/deref, num-rows:offset
   height:address:number/deref <- next-ingredient
-#?   $print height:address:number/deref, [ 
-#? ] #? 1
+#?   $print height:address:number/deref, 10:literal/newline
   row:address:number <- get-address result:address:screen/deref, cursor-row:offset
   row:address:number/deref <- copy 0:literal
   column:address:number <- get-address result:address:screen/deref, cursor-column:offset
@@ -126,8 +125,7 @@ recipe print-character [
     # special-case: newline
     {
       newline?:boolean <- equal c:character, 10:literal/newline
-#?       $print c:character, [ ], newline?:boolean, [ 
-#? ] #? 1
+#?       $print c:character, [ ], newline?:boolean, 10:literal/newline
       break-unless newline?:boolean
       {
         # unless cursor is already at bottom
@@ -164,8 +162,7 @@ recipe print-character [
       }
       reply x:address:screen/same-as-ingredient:0
     }
-#?     $print [saving character ], c:character, [ to fake screen ], cursor:address/screen, [ 
-#? ] #? 1
+#?     $print [saving character ], c:character, [ to fake screen ], cursor:address/screen, 10:literal/newline
     cursor:address:screen-cell <- index-address buf:address:array:screen-cell/deref, index:number
     cursor-contents:address:character <- get-address cursor:address:screen-cell/deref, contents:offset
     cursor-color:address:number <- get-address cursor:address:screen-cell/deref, color:offset
@@ -353,8 +350,7 @@ recipe clear-line [
     # space over the entire line
 #?     $start-tracing #? 1
     {
-#?       $print column:address:number/deref, [ 
-#? ] #? 1
+#?       $print column:address:number/deref, 10:literal/newline
       right:number <- subtract width:number, 1:literal
       done?:boolean <- greater-or-equal column:address:number/deref, right:number
       break-if done?:boolean
@@ -448,11 +444,9 @@ recipe cursor-down [
       at-bottom?:boolean <- greater-or-equal row:address:number/deref, max:number
       break-if at-bottom?:boolean
       # row = row+1
-#?       $print [AAA: ], row:address:number, [ -> ], row:address:number/deref, [ 
-#? ] #? 1
+#?       $print [AAA: ], row:address:number, [ -> ], row:address:number/deref, 10:literal/newline
       row:address:number/deref <- add row:address:number/deref, 1:literal
-#?       $print [BBB: ], row:address:number, [ -> ], row:address:number/deref, [ 
-#? ] #? 1
+#?       $print [BBB: ], row:address:number, [ -> ], row:address:number/deref, 10:literal/newline
 #?       $start-tracing #? 1
     }
     reply x:address:screen/same-as-ingredient:0
diff --git a/chessboard.mu b/chessboard.mu
index a91e6da7..638b8367 100644
--- a/chessboard.mu
+++ b/chessboard.mu
@@ -66,17 +66,6 @@ scenario print-board-and-read-move [
   ]
 ]
 
-#? scenario foo [ #? 1
-#?   $print [aaa] #? 1
-#?   run [ #? 1
-#?     1:number <- copy 34:literal #? 1
-#?   ] #? 1
-#?   memory-should-contain [ #? 1
-#?     1 <- 34 #? 1
-#?   ] #? 1
-#?   $print [zzz] #? 1
-#? ] #? 1
-
 ## Here's how 'chessboard' is implemented.
 
 recipe chessboard [
@@ -85,8 +74,7 @@ recipe chessboard [
   local-scope
   screen:address <- next-ingredient
   console:address <- next-ingredient
-#?   $print [screen: ], screen:address, [, console: ], console:address, [ 
-#? ] #? 1
+#?   $print [screen: ], screen:address, [, console: ], console:address, 10:literal/newline
   board:address:array:address:array:character <- initial-position
   # hook up stdin
   stdin:address:channel <- new-channel 10:literal/capacity
@@ -98,31 +86,21 @@ recipe chessboard [
     msg:address:array:character <- new [Stupid text-mode chessboard. White pieces in uppercase; black pieces in lowercase. No checking for legal moves.
 ]
     print-string screen:address, msg:address:array:character
-#?     $print [aaa
-#? ] #? 1
     cursor-to-next-line screen:address
     print-board screen:address, board:address:array:address:array:character
     cursor-to-next-line screen:address
     msg:address:array:character <- new [Type in your move as <from square>-<to square>. For example: 'a2-a4'. Then press <enter>.
 ]
     print-string screen:address, msg:address:array:character
-#?     $print [bbb
-#? ] #? 1
     cursor-to-next-line screen:address
     msg:address:array:character <- new [Hit 'q' to exit.
 ]
     print-string screen:address, msg:address:array:character
-#?     $print [ccc
-#? ] #? 1
     {
       cursor-to-next-line screen:address
       msg:address:array:character <- new [move: ]
       print-string screen:address, msg:address:array:character
-#?     $print [ddd
-#? ] #? 1
       m:address:move, quit:boolean, error:boolean <- read-move buffered-stdin:address:channel, screen:address
-#?     $print [eee
-#? ] #? 1
       break-if quit:boolean, +quit:offset
       buffered-stdin:address:channel <- clear-channel buffered-stdin:address:channel  # cleanup after error. todo: test this?
       loop-if error:boolean
@@ -132,7 +110,6 @@ recipe chessboard [
     loop
   }
   +quit
-#?   $print [aaa] #? 1
 ]
 
 ## a board is an array of files, a file is an array of characters (squares)
@@ -183,13 +160,11 @@ recipe print-board [
   board:address:array:address:array:character <- next-ingredient
   row:number <- copy 7:literal  # start printing from the top of the board
   # print each row
-#?   $print [printing board to screen ], screen:address, [ 
-#? ] #? 1
+#?   $print [printing board to screen ], screen:address, 10:literal/newline
   {
     done?:boolean <- lesser-than row:number, 0:literal
     break-if done?:boolean
-#?     $print [printing rank ], row:number, [ 
-#? ] #? 1
+#?     $print [printing rank ], row:number, 10:literal/newline
     # print rank number as a legend
     rank:number <- add row:number, 1:literal
     print-integer screen:address, rank:number
@@ -349,8 +324,7 @@ recipe read-file [
     reply 0:literal/dummy, 0:literal/quit, 1:literal/error
   }
   file:number <- subtract c:character, 97:literal  # 'a'
-#?   $print file:number, [ 
-#? ] #? 1
+#?   $print file:number, 10:literal/newline
   # 'a' <= file <= 'h'
   {
     above-min:boolean <- greater-or-equal file:number, 0:literal
@@ -397,8 +371,7 @@ recipe read-rank [
     reply 0:literal/dummy, 0:literal/quit, 1:literal/error
   }
   rank:number <- subtract c:character, 49:literal  # '1'
-#?   $print rank:number, [ 
-#? ] #? 1
+#?   $print rank:number, 10:literal/newline
   # assert'1' <= rank <= '8'
   {
     above-min:boolean <- greater-or-equal rank:number, 0:literal
@@ -442,30 +415,25 @@ scenario read-move-blocking [
   run [
 #?     $start-tracing #? 1
     1:address:channel <- new-channel 2:literal
-#?     $print [aaa channel address: ], 1:address:channel, [ 
-#? ] #? 1
+#?     $print [aaa channel address: ], 1:address:channel, 10:literal/newline
     2:number/routine <- start-running read-move:recipe, 1:address:channel, screen:address
     # 'read-move' is waiting for input
     wait-for-routine 2:number
-#?     $print [bbb channel address: ], 1:address:channel, [ 
-#? ] #? 1
+#?     $print [bbb channel address: ], 1:address:channel, 10:literal/newline
     3:number <- routine-state 2:number/id
-#?     $print [I: routine ], 2:number, [ state ], 3:number [ 
-#? ] #? 1
+#?     $print [I: routine ], 2:number, [ state ], 3:number 10:literal/newline
     4:boolean/waiting? <- equal 3:number/routine-state, 2:literal/waiting
     assert 4:boolean/waiting?, [
 F read-move-blocking: routine failed to pause after coming up (before any keys were pressed)]
     # press 'a'
-#?     $print [ccc channel address: ], 1:address:channel, [ 
-#? ] #? 1
+#?     $print [ccc channel address: ], 1:address:channel, 10:literal/newline
 #?     $exit #? 1
     1:address:channel <- write 1:address:channel, 97:literal  # 'a'
     restart 2:number/routine
     # 'read-move' still waiting for input
     wait-for-routine 2:number
     3:number <- routine-state 2:number/id
-#?     $print [II: routine ], 2:number, [ state ], 3:number [ 
-#? ] #? 1
+#?     $print [II: routine ], 2:number, [ state ], 3:number 10:literal/newline
     4:boolean/waiting? <- equal 3:number/routine-state, 2:literal/waiting
     assert 4:boolean/waiting?, [
 F read-move-blocking: routine failed to pause after rank 'a']
@@ -475,8 +443,7 @@ F read-move-blocking: routine failed to pause after rank 'a']
     # 'read-move' still waiting for input
     wait-for-routine 2:number
     3:number <- routine-state 2:number/id
-#?     $print [III: routine ], 2:number, [ state ], 3:number [ 
-#? ] #? 1
+#?     $print [III: routine ], 2:number, [ state ], 3:number 10:literal/newline
     4:boolean/waiting? <- equal 3:number/routine-state, 2:literal/waiting
     assert 4:boolean/waiting?, [
 F read-move-blocking: routine failed to pause after file 'a2']
@@ -486,8 +453,7 @@ F read-move-blocking: routine failed to pause after file 'a2']
     # 'read-move' still waiting for input
     wait-for-routine 2:number
     3:number <- routine-state 2:number
-#?     $print [IV: routine ], 2:number, [ state ], 3:number [ 
-#? ] #? 1
+#?     $print [IV: routine ], 2:number, [ state ], 3:number 10:literal/newline
     4:boolean/waiting? <- equal 3:number/routine-state, 2:literal/waiting
     assert 4:boolean/waiting?/routine-state, [
 F read-move-blocking: routine failed to pause after hyphen 'a2-']
@@ -497,8 +463,7 @@ F read-move-blocking: routine failed to pause after hyphen 'a2-']
     # 'read-move' still waiting for input
     wait-for-routine 2:number
     3:number <- routine-state 2:number
-#?     $print [V: routine ], 2:number, [ state ], 3:number [ 
-#? ] #? 1
+#?     $print [V: routine ], 2:number, [ state ], 3:number 10:literal/newline
     4:boolean/waiting? <- equal 3:number/routine-state, 2:literal/waiting
     assert 4:boolean/waiting?/routine-state, [
 F read-move-blocking: routine failed to pause after rank 'a2-a']
@@ -508,8 +473,7 @@ F read-move-blocking: routine failed to pause after rank 'a2-a']
     # 'read-move' still waiting for input
     wait-for-routine 2:number
     3:number <- routine-state 2:number
-#?     $print [VI: routine ], 2:number, [ state ], 3:number [ 
-#? ] #? 1
+#?     $print [VI: routine ], 2:number, [ state ], 3:number 10:literal/newline
     4:boolean/waiting? <- equal 3:number/routine-state, 2:literal/waiting
     assert 4:boolean/waiting?, [
 F read-move-blocking: routine failed to pause after file 'a2-a4']
@@ -519,8 +483,7 @@ F read-move-blocking: routine failed to pause after file 'a2-a4']
     # 'read-move' now completes
     wait-for-routine 2:number
     3:number <- routine-state 2:number
-#?     $print [VII: routine ], 2:number, [ state ], 3:number [ 
-#? ] #? 1
+#?     $print [VII: routine ], 2:number, [ state ], 3:number 10:literal/newline
     4:boolean/completed? <- equal 3:number/routine-state, 1:literal/completed
     assert 4:boolean/completed?, [
 F read-move-blocking: routine failed to terminate on newline]
@@ -628,23 +591,18 @@ recipe make-move [
   b:address:array:address:array:character <- next-ingredient
   m:address:move <- next-ingredient
   from-file:number <- get m:address:move/deref, from-file:offset
-#?   $print from-file:number, [ 
-#? ] #? 1
+#?   $print from-file:number, 10:literal/newline
   from-rank:number <- get m:address:move/deref, from-rank:offset
-#?   $print from-rank:number, [ 
-#? ] #? 1
+#?   $print from-rank:number, 10:literal/newline
   to-file:number <- get m:address:move/deref, to-file:offset
-#?   $print to-file:number, [ 
-#? ] #? 1
+#?   $print to-file:number, 10:literal/newline
   to-rank:number <- get m:address:move/deref, to-rank:offset
-#?   $print to-rank:number, [ 
-#? ] #? 1
+#?   $print to-rank:number, 10:literal/newline
   f:address:array:character <- index b:address:array:address:array:character/deref, from-file:number
   src:address:character/square <- index-address f:address:array:character/deref, from-rank:number
   f:address:array:character <- index b:address:array:address:array:character/deref, to-file:number
   dest:address:character/square <- index-address f:address:array:character/deref, to-rank:number
-#?   $print src:address:character/deref, [ 
-#? ] #? 1
+#?   $print src:address:character/deref, 10:literal/newline
   dest:address:character/deref/square <- copy src:address:character/deref/square
   src:address:character/deref/square <- copy 32:literal  # ' '
   reply b:address:array:address:array:character/same-as-ingredient:0
diff --git a/edit.mu b/edit.mu
index 7a1fa232..2e3276ae 100644
--- a/edit.mu
+++ b/edit.mu
@@ -878,8 +878,7 @@ recipe insert-at-cursor [
   editor:address:editor-data <- next-ingredient
   c:character <- next-ingredient
   screen:address <- next-ingredient
-#?   $print [insert ], c:character, [ 
-#? ] #? 1
+#?   $print [insert ], c:character, 10:literal/newline
   before-cursor:address:address:duplex-list <- get-address editor:address:editor-data/deref, before-cursor:offset
   d:address:duplex-list <- get editor:address:editor-data/deref, data:offset
   insert-duplex c:character, before-cursor:address:address:duplex-list/deref
@@ -901,8 +900,7 @@ recipe insert-at-cursor [
   {
     # if we're at the column just before the wrap indicator
     wrap-column:number <- subtract right:number, 1:literal
-#?     $print [wrap? ], cursor-column:address:number/deref, [ vs ], wrap-column:number, [ 
-#? ] #? 1
+#?     $print [wrap? ], cursor-column:address:number/deref, [ vs ], wrap-column:number, 10:literal/newline
     at-wrap?:boolean <- greater-or-equal cursor-column:address:number/deref, wrap-column:number
     break-unless at-wrap?:boolean
 #?     $print [wrap!
@@ -936,8 +934,7 @@ recipe delete-before-cursor [
   before-cursor:address:address:duplex-list/deref <- copy prev:address:duplex-list
   cursor-column:address:number <- get-address editor:address:editor-data/deref, cursor-column:offset
   cursor-column:address:number/deref <- subtract cursor-column:address:number/deref, 1:literal
-#?   $print [delete-before-cursor: ], cursor-column:address:number/deref, [ 
-#? ] #? 1
+#?   $print [delete-before-cursor: ], cursor-column:address:number/deref, 10:literal/newline
 ]
 
 # takes a pointer 'curr' into the doubly-linked list and its sentinel, counts
@@ -1170,8 +1167,7 @@ recipe render-sandboxes [
   screen-height:number <- screen-height screen:address
   at-bottom?:boolean <- greater-or-equal row:number screen-height:number
   reply-if at-bottom?:boolean, row:number/same-as-ingredient:4, screen:address/same-as-ingredient:0
-#?   $print [rendering sandbox ], sandbox:address:sandbox-data, [ 
-#? ] #? 1
+#?   $print [rendering sandbox ], sandbox:address:sandbox-data, 10:literal/newline
   # render sandbox menu
   row:number <- add row:number, 1:literal
   move-cursor screen:address, row:number, left:number
@@ -2736,8 +2732,7 @@ recipe run-sandboxes [
     warnings:address:address:array:character <- get-address curr:address:sandbox-data/deref, warnings:offset
     fake-screen:address:address:screen <- get-address curr:address:sandbox-data/deref, screen:offset
     response:address:address:array:character/deref, warnings:address:address:array:character/deref, fake-screen:address:address:screen/deref <- run-interactive data:address:address:array:character/deref
-#?     $print warnings:address:address:array:character/deref, [ ], warnings:address:address:array:character/deref/deref, [ 
-#? ] #? 1
+#?     $print warnings:address:address:array:character/deref, [ ], warnings:address:address:array:character/deref/deref, 10:literal/newline
     curr:address:sandbox-data <- get curr:address:sandbox-data/deref, next-sandbox:offset
     loop
   }
@@ -2751,16 +2746,14 @@ recipe delete-sandbox [
   click-column:number <- get t:touch-event, column:offset
   current-sandbox:address:editor-data <- get env:address:programming-environment-data/deref, current-sandbox:offset
   right:number <- get current-sandbox:address:editor-data/deref, right:offset
-#?   $print [comparing column ], click-column:number, [ vs ], right:number, [ 
-#? ] #? 1
+#?   $print [comparing column ], click-column:number, [ vs ], right:number, 10:literal/newline
   at-right?:boolean <- equal click-column:number, right:number
   reply-unless at-right?:boolean, 0:literal/false
 #?   $print [trying to delete
 #? ] #? 1
   click-row:number <- get t:touch-event, row:offset
   prev:address:address:sandbox-data <- get-address env:address:programming-environment-data/deref, sandbox:offset
-#?   $print [prev: ], prev:address:address:sandbox-data, [ -> ], prev:address:address:sandbox-data/deref, [ 
-#? ] #? 1
+#?   $print [prev: ], prev:address:address:sandbox-data, [ -> ], prev:address:address:sandbox-data/deref, 10:literal/newline
   curr:address:sandbox-data <- get env:address:programming-environment-data/deref, sandbox:offset
   {
 #?     $print [next sandbox
@@ -2771,21 +2764,18 @@ recipe delete-sandbox [
 #?       $print [checking
 #? ] #? 1
       target-row:number <- get curr:address:sandbox-data/deref, starting-row-on-screen:offset
-#?       $print [comparing row ], target-row:number, [ vs ], click-row:number, [ 
-#? ] #? 1
+#?       $print [comparing row ], target-row:number, [ vs ], click-row:number, 10:literal/newline
       delete-curr?:boolean <- equal target-row:number, click-row:number
       break-unless delete-curr?:boolean
 #?       $print [found!
 #? ] #? 1
       # delete this sandbox, rerender and stop
       prev:address:address:sandbox-data/deref <- get curr:address:sandbox-data/deref, next-sandbox:offset
-#?       $print [setting prev: ], prev:address:address:sandbox-data, [ -> ], prev:address:address:sandbox-data/deref, [ 
-#? ] #? 1
+#?       $print [setting prev: ], prev:address:address:sandbox-data, [ -> ], prev:address:address:sandbox-data/deref, 10:literal/newline
       reply 1:literal/true
     }
     prev:address:address:sandbox-data <- get-address curr:address:sandbox-data/deref, next-sandbox:offset
-#?     $print [prev: ], prev:address:address:sandbox-data, [ -> ], prev:address:address:sandbox-data/deref, [ 
-#? ] #? 1
+#?     $print [prev: ], prev:address:address:sandbox-data, [ -> ], prev:address:address:sandbox-data/deref, 10:literal/newline
     curr:address:sandbox-data <- get curr:address:sandbox-data/deref, next-sandbox:offset
     loop
   }
@@ -3229,8 +3219,7 @@ recipe print-string-with-gradient-background [
   color-range:number <- subtract bg-color2:number, bg-color1:number
   color-quantum:number <- divide color-range:number, len:number
 #?   close-console #? 2
-#?   $print len:number, [, ], color-range:number, [, ], color-quantum:number, [ 
-#? ] #? 2
+#?   $print len:number, [, ], color-range:number, [, ], color-quantum:number, 10:literal/newline
 #? #?   $exit #? 3
   bg-color:number <- copy bg-color1:number
   i:number <- copy 0:literal
@@ -3241,8 +3230,7 @@ recipe print-string-with-gradient-background [
     print-character x:address:screen, c:character, color:number, bg-color:number
     i:number <- add i:number, 1:literal
     bg-color:number <- add bg-color:number, color-quantum:number
-#?     $print [=> ], bg-color:number, [ 
-#? ] #? 1
+#?     $print [=> ], bg-color:number, 10:literal/newline
     loop
   }
 #?   $exit #? 1