diff options
-rw-r--r-- | edit.mu | 54 |
1 files changed, 23 insertions, 31 deletions
diff --git a/edit.mu b/edit.mu index 9b595fc1..245762b0 100644 --- a/edit.mu +++ b/edit.mu @@ -583,13 +583,10 @@ recipe handle-event [ wrap-column:number <- subtract right:number, 1:literal at-wrap?:boolean <- equal cursor-column:address:number/deref, wrap-column:number break-unless at-wrap?:boolean - # and if character after next isn't newline -#? $print [aaa] #? 1 + # and if next character isn't newline new-cursor:address:duplex-list <- next-duplex old-cursor:address:duplex-list break-unless new-cursor:address:duplex-list - next:address:duplex-list <- next-duplex new-cursor:address:duplex-list - break-unless next:address:duplex-list - next-character:character <- get next:address:duplex-list/deref, value:offset + next-character:character <- get new-cursor:address:duplex-list/deref, value:offset newline?:boolean <- equal next-character:character, 10:literal/newline break-if newline?:boolean cursor-row:address:number/deref <- add cursor-row:address:number/deref, 1:literal @@ -1298,10 +1295,12 @@ scenario editor-moves-cursor-to-next-wrapped-line-with-right-arrow [ scenario editor-moves-cursor-to-next-wrapped-line-with-right-arrow-2 [ assume-screen 10:literal/width, 5:literal/height - 1:address:array:character <- new [abcdef] - 2:address:editor-data <- new-editor 1:address:array:character, screen:address, 0:literal/top, 1:literal/left, 6:literal/right + # line just barely wrapping + 1:address:array:character <- new [abcde] + 2:address:editor-data <- new-editor 1:address:array:character, screen:address, 0:literal/top, 0:literal/left, 5:literal/right + # position cursor at last character before wrap and hit right-arrow assume-console [ - left-click 0, 4 + left-click 0, 3 press 65514 # right arrow ] run [ @@ -1309,24 +1308,13 @@ scenario editor-moves-cursor-to-next-wrapped-line-with-right-arrow-2 [ 3:number <- get 2:address:editor-data/deref, cursor-row:offset 4:number <- get 2:address:editor-data/deref, cursor-column:offset ] - screen-should-contain [ - . abcd↩ . - . ef . - . . - ] memory-should-contain [ 3 <- 1 - 4 <- 1 + 4 <- 0 ] -] - -scenario editor-does-not-wrap-cursor-when-line-does-not-wrap [ - assume-screen 10:literal/width, 5:literal/height - 1:address:array:character <- new [abcde] - 2:address:editor-data <- new-editor 1:address:array:character, screen:address, 0:literal/top, 0:literal/left, 5:literal/right + # now hit right arrow again assume-console [ - left-click 0, 3 # one before right, in the last line - press 65514 # right arrow + press 65514 ] run [ event-loop screen:address, console:address, 2:address:editor-data @@ -1334,18 +1322,17 @@ scenario editor-does-not-wrap-cursor-when-line-does-not-wrap [ 4:number <- get 2:address:editor-data/deref, cursor-column:offset ] memory-should-contain [ - 3 <- 0 - 4 <- 4 + 3 <- 1 + 4 <- 1 ] ] -scenario editor-does-not-wrap-cursor-when-line-does-not-wrap-2 [ +scenario editor-moves-cursor-to-next-wrapped-line-with-right-arrow-3 [ assume-screen 10:literal/width, 5:literal/height - 1:address:array:character <- new [abcde -f] - 2:address:editor-data <- new-editor 1:address:array:character, screen:address, 0:literal/top, 0:literal/left, 5:literal/right + 1:address:array:character <- new [abcdef] + 2:address:editor-data <- new-editor 1:address:array:character, screen:address, 0:literal/top, 1:literal/left, 6:literal/right assume-console [ - left-click 0, 3 # one before right, not the last line + left-click 0, 4 press 65514 # right arrow ] run [ @@ -1353,9 +1340,14 @@ f] 3:number <- get 2:address:editor-data/deref, cursor-row:offset 4:number <- get 2:address:editor-data/deref, cursor-column:offset ] + screen-should-contain [ + . abcd↩ . + . ef . + . . + ] memory-should-contain [ - 3 <- 0 - 4 <- 4 + 3 <- 1 + 4 <- 1 ] ] |