diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2016-04-24 11:54:30 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2016-04-24 11:54:30 -0700 |
commit | b0bf5321de2ba32f3b92c2faf6b7b68a06b6b432 (patch) | |
tree | 9e0473bddd0d9a2d4aec7ac58dec8d85c2833a5d /edit/001-editor.mu | |
parent | 15936c91a9f8023dc868a021029f84b45aa50176 (diff) | |
download | mu-b0bf5321de2ba32f3b92c2faf6b7b68a06b6b432.tar.gz |
2864 - replace all address:shared with just address
Now that we no longer have non-shared addresses, we can just always track refcounts for all addresses. Phew!
Diffstat (limited to 'edit/001-editor.mu')
-rw-r--r-- | edit/001-editor.mu | 76 |
1 files changed, 38 insertions, 38 deletions
diff --git a/edit/001-editor.mu b/edit/001-editor.mu index 614608c2..06c5a8dc 100644 --- a/edit/001-editor.mu +++ b/edit/001-editor.mu @@ -2,7 +2,7 @@ # temporary main for this layer: just render the given text at the given # screen dimensions, then stop -def! main text:address:shared:array:character [ +def! main text:address:array:character [ local-scope load-ingredients open-console @@ -16,8 +16,8 @@ def! main text:address:shared:array:character [ scenario editor-initially-prints-text-to-screen [ assume-screen 10/width, 5/height run [ - 1:address:shared:array:character <- new [abc] - new-editor 1:address:shared:array:character, screen:address:shared:screen, 0/left, 10/right + 1:address:array:character <- new [abc] + new-editor 1:address:array:character, screen:address:screen, 0/left, 10/right ] screen-should-contain [ # top line of screen reserved for menu @@ -29,11 +29,11 @@ scenario editor-initially-prints-text-to-screen [ container editor-data [ # editable text: doubly linked list of characters (head contains a special sentinel) - data:address:shared:duplex-list:character - top-of-screen:address:shared:duplex-list:character - bottom-of-screen:address:shared:duplex-list:character + data:address:duplex-list:character + top-of-screen:address:duplex-list:character + bottom-of-screen:address:duplex-list:character # location before cursor inside data - before-cursor:address:shared:duplex-list:character + before-cursor:address:duplex-list:character # raw bounds of display area on screen # always displays from row 1 (leaving row 0 for a menu) and at most until bottom of screen @@ -48,7 +48,7 @@ container editor-data [ # creates a new editor widget and renders its initial appearance to screen # top/left/right constrain the screen area available to the new editor # right is exclusive -def new-editor s:address:shared:array:character, screen:address:shared:screen, left:number, right:number -> result:address:shared:editor-data, screen:address:shared:screen [ +def new-editor s:address:array:character, screen:address:screen, left:number, right:number -> result:address:editor-data, screen:address:screen [ local-scope load-ingredients # no clipping of bounds @@ -61,7 +61,7 @@ def new-editor s:address:shared:array:character, screen:address:shared:screen, l *result <- put *result, cursor-row:offset, 1/top *result <- put *result, cursor-column:offset, left # initialize empty contents - init:address:shared:duplex-list:character <- push 167/§, 0/tail + init:address:duplex-list:character <- push 167/§, 0/tail *result <- put *result, data:offset, init *result <- put *result, top-of-screen:offset, init *result <- put *result, before-cursor:offset, init @@ -71,7 +71,7 @@ def new-editor s:address:shared:array:character, screen:address:shared:screen, l <editor-initialization> ] -def insert-text editor:address:shared:editor-data, text:address:shared:array:character -> editor:address:shared:editor-data [ +def insert-text editor:address:editor-data, text:address:array:character -> editor:address:editor-data [ local-scope load-ingredients # early exit if text is empty @@ -80,7 +80,7 @@ def insert-text editor:address:shared:editor-data, text:address:shared:array:cha return-unless len, editor/same-as-ingredient:0 idx:number <- copy 0 # now we can start appending the rest, character by character - curr:address:shared:duplex-list:character <- get *editor, data:offset + curr:address:duplex-list:character <- get *editor, data:offset { done?:boolean <- greater-or-equal idx, len break-if done? @@ -97,8 +97,8 @@ def insert-text editor:address:shared:editor-data, text:address:shared:array:cha scenario editor-initializes-without-data [ assume-screen 5/width, 3/height run [ - 1:address:shared:editor-data <- new-editor 0/data, screen:address:shared:screen, 2/left, 5/right - 2:editor-data <- copy *1:address:shared:editor-data + 1:address:editor-data <- new-editor 0/data, screen:address:screen, 2/left, 5/right + 2:editor-data <- copy *1:address:editor-data ] memory-should-contain [ # 2 (data) <- just the § sentinel @@ -121,7 +121,7 @@ scenario editor-initializes-without-data [ # Assumes cursor should be at coordinates (cursor-row, cursor-column) and # updates before-cursor to match. Might also move coordinates if they're # outside text. -def render screen:address:shared:screen, editor:address:shared:editor-data -> last-row:number, last-column:number, screen:address:shared:screen, editor:address:shared:editor-data [ +def render screen:address:screen, editor:address:editor-data -> last-row:number, last-column:number, screen:address:screen, editor:address:editor-data [ local-scope load-ingredients return-unless editor, 1/top, 0/left, screen/same-as-ingredient:0, editor/same-as-ingredient:1 @@ -129,8 +129,8 @@ def render screen:address:shared:screen, editor:address:shared:editor-data -> la screen-height:number <- screen-height screen right:number <- get *editor, right:offset # traversing editor - curr:address:shared:duplex-list:character <- get *editor, top-of-screen:offset - prev:address:shared:duplex-list:character <- copy curr # just in case curr becomes null and we can't compute prev + curr:address:duplex-list:character <- get *editor, top-of-screen:offset + prev:address:duplex-list:character <- copy curr # just in case curr becomes null and we can't compute prev curr <- next curr # traversing screen +render-loop-initialization @@ -139,7 +139,7 @@ def render screen:address:shared:screen, editor:address:shared:editor-data -> la column:number <- copy left cursor-row:number <- get *editor, cursor-row:offset cursor-column:number <- get *editor, cursor-column:offset - before-cursor:address:shared:duplex-list:character <- get *editor, before-cursor:offset + before-cursor:address:duplex-list:character <- get *editor, before-cursor:offset screen <- move-cursor screen, row, column { +next-character @@ -222,7 +222,7 @@ def render screen:address:shared:screen, editor:address:shared:editor-data -> la return row, column, screen/same-as-ingredient:0, editor/same-as-ingredient:1 ] -def clear-line-delimited screen:address:shared:screen, column:number, right:number -> screen:address:shared:screen [ +def clear-line-delimited screen:address:screen, column:number, right:number -> screen:address:screen [ local-scope load-ingredients space:character <- copy 32/space @@ -241,7 +241,7 @@ def clear-line-delimited screen:address:shared:screen, column:number, right:numb } ] -def clear-screen-from screen:address:shared:screen, row:number, column:number, left:number, right:number -> screen:address:shared:screen [ +def clear-screen-from screen:address:screen, row:number, column:number, left:number, right:number -> screen:address:screen [ local-scope load-ingredients # if it's the real screen, use the optimized primitive @@ -257,7 +257,7 @@ def clear-screen-from screen:address:shared:screen, row:number, column:number, l return screen/same-as-ingredient:0 ] -def clear-rest-of-screen screen:address:shared:screen, row:number, left:number, right:number -> screen:address:shared:screen [ +def clear-rest-of-screen screen:address:screen, row:number, left:number, right:number -> screen:address:screen [ local-scope load-ingredients row <- add row, 1 @@ -276,9 +276,9 @@ def clear-rest-of-screen screen:address:shared:screen, row:number, left:number, scenario editor-initially-prints-multiple-lines [ assume-screen 5/width, 5/height run [ - s:address:shared:array:character <- new [abc + s:address:array:character <- new [abc def] - new-editor s:address:shared:array:character, screen:address:shared:screen, 0/left, 5/right + new-editor s:address:array:character, screen:address:screen, 0/left, 5/right ] screen-should-contain [ . . @@ -291,8 +291,8 @@ def] scenario editor-initially-handles-offsets [ assume-screen 5/width, 5/height run [ - s:address:shared:array:character <- new [abc] - new-editor s:address:shared:array:character, screen:address:shared:screen, 1/left, 5/right + s:address:array:character <- new [abc] + new-editor s:address:array:character, screen:address:screen, 1/left, 5/right ] screen-should-contain [ . . @@ -304,9 +304,9 @@ scenario editor-initially-handles-offsets [ scenario editor-initially-prints-multiple-lines-at-offset [ assume-screen 5/width, 5/height run [ - s:address:shared:array:character <- new [abc + s:address:array:character <- new [abc def] - new-editor s:address:shared:array:character, screen:address:shared:screen, 1/left, 5/right + new-editor s:address:array:character, screen:address:screen, 1/left, 5/right ] screen-should-contain [ . . @@ -319,8 +319,8 @@ def] scenario editor-initially-wraps-long-lines [ assume-screen 5/width, 5/height run [ - s:address:shared:array:character <- new [abc def] - new-editor s:address:shared:array:character, screen:address:shared:screen, 0/left, 5/right + s:address:array:character <- new [abc def] + new-editor s:address:array:character, screen:address:screen, 0/left, 5/right ] screen-should-contain [ . . @@ -339,8 +339,8 @@ scenario editor-initially-wraps-long-lines [ scenario editor-initially-wraps-barely-long-lines [ assume-screen 5/width, 5/height run [ - s:address:shared:array:character <- new [abcde] - new-editor s:address:shared:array:character, screen:address:shared:screen, 0/left, 5/right + s:address:array:character <- new [abcde] + new-editor s:address:array:character, screen:address:screen, 0/left, 5/right ] # still wrap, even though the line would fit. We need room to click on the # end of the line @@ -361,10 +361,10 @@ scenario editor-initially-wraps-barely-long-lines [ scenario editor-initializes-empty-text [ assume-screen 5/width, 5/height run [ - 1:address:shared:array:character <- new [] - 2:address:shared:editor-data <- new-editor 1:address:shared:array:character, screen:address:shared:screen, 0/left, 5/right - 3:number <- get *2:address:shared:editor-data, cursor-row:offset - 4:number <- get *2:address:shared:editor-data, cursor-column:offset + 1:address:array:character <- new [] + 2:address:editor-data <- new-editor 1:address:array:character, screen:address:screen, 0/left, 5/right + 3:number <- get *2:address:editor-data, cursor-row:offset + 4:number <- get *2:address:editor-data, cursor-column:offset ] screen-should-contain [ . . @@ -382,10 +382,10 @@ scenario editor-initializes-empty-text [ scenario render-colors-comments [ assume-screen 5/width, 5/height run [ - s:address:shared:array:character <- new [abc + s:address:array:character <- new [abc # de f] - new-editor s:address:shared:array:character, screen:address:shared:screen, 0/left, 5/right + new-editor s:address:array:character, screen:address:screen, 0/left, 5/right ] screen-should-contain [ . . @@ -463,10 +463,10 @@ def get-color color:number, c:character -> color:number [ scenario render-colors-assignment [ assume-screen 8/width, 5/height run [ - s:address:shared:array:character <- new [abc + s:address:array:character <- new [abc d <- e f] - new-editor s:address:shared:array:character, screen:address:shared:screen, 0/left, 8/right + new-editor s:address:array:character, screen:address:screen, 0/left, 8/right ] screen-should-contain [ . . |