about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--edit.mu125
1 files changed, 122 insertions, 3 deletions
diff --git a/edit.mu b/edit.mu
index 7b764f95..d9e5e882 100644
--- a/edit.mu
+++ b/edit.mu
@@ -963,7 +963,6 @@ recipe delete-to-end-of-line [
   editor:address:editor-data <- next-ingredient
   # compute range to delete
   start:address:duplex-list <- get editor:address:editor-data/deref, before-cursor:offset
-  start:address:duplex-list <- next-duplex start:address:duplex-list
   end:address:duplex-list <- next-duplex start:address:duplex-list
   {
     at-end-of-text?:boolean <- equal end:address:duplex-list, 0:literal/null
@@ -2217,6 +2216,30 @@ scenario editor-deletes-to-start-of-line-with-ctrl-u-2 [
   ]
 ]
 
+scenario editor-deletes-to-start-of-line-with-ctrl-u-3 [
+  assume-screen 10:literal/width, 5:literal/height
+  1:address:array:character <- new [123
+456]
+  2:address:editor-data <- new-editor 1:address:array:character, screen:address, 0:literal/left, 10:literal/right
+  # start past end of line, press ctrl-u
+  assume-console [
+    left-click 1, 3
+    type [u]  # ctrl-u
+  ]
+  3:event/ctrl-u <- merge 0:literal/text, 21:literal/ctrl-a, 0:literal/dummy, 0:literal/dummy
+  replace-in-console 117:literal/a, 3:event/ctrl-u
+  run [
+    editor-event-loop screen:address, console:address, 2:address:editor-data
+  ]
+  # cursor deletes to start of line
+  screen-should-contain [
+    .          .
+    .          .
+    .456       .
+    .          .
+  ]
+]
+
 scenario editor-deletes-to-end-of-line-with-ctrl-k [
   assume-screen 10:literal/width, 5:literal/height
   1:address:array:character <- new [123
@@ -2224,7 +2247,7 @@ scenario editor-deletes-to-end-of-line-with-ctrl-k [
   2:address:editor-data <- new-editor 1:address:array:character, screen:address, 0:literal/left, 10:literal/right
   # start on first line, press ctrl-k
   assume-console [
-    left-click 1, 0
+    left-click 1, 1
     type [k]  # ctrl-k
   ]
   3:event/ctrl-k <- merge 0:literal/text, 11:literal/ctrl-k, 0:literal/dummy, 0:literal/dummy
@@ -2248,7 +2271,7 @@ scenario editor-deletes-to-end-of-line-with-ctrl-k-2 [
   2:address:editor-data <- new-editor 1:address:array:character, screen:address, 0:literal/left, 10:literal/right
   # start on second line (no newline after), press ctrl-k
   assume-console [
-    left-click 2, 0
+    left-click 2, 1
     type [k]  # ctrl-k
   ]
   3:event/ctrl-k <- merge 0:literal/text, 11:literal/ctrl-k, 0:literal/dummy, 0:literal/dummy
@@ -2265,6 +2288,102 @@ scenario editor-deletes-to-end-of-line-with-ctrl-k-2 [
   ]
 ]
 
+scenario editor-deletes-to-end-of-line-with-ctrl-k-3 [
+  assume-screen 10:literal/width, 5:literal/height
+  1:address:array:character <- new [123
+456]
+  2:address:editor-data <- new-editor 1:address:array:character, screen:address, 0:literal/left, 10:literal/right
+  # start at end of line
+  assume-console [
+    left-click 1, 2
+    type [k]  # ctrl-k
+  ]
+  3:event/ctrl-k <- merge 0:literal/text, 11:literal/ctrl-k, 0:literal/dummy, 0:literal/dummy
+  replace-in-console 107:literal/k, 3:event/ctrl-k
+  run [
+    editor-event-loop screen:address, console:address, 2:address:editor-data
+  ]
+  # cursor deletes to end of line
+  screen-should-contain [
+    .          .
+    .12        .
+    .456       .
+    .          .
+  ]
+]
+
+scenario editor-deletes-to-end-of-line-with-ctrl-k-4 [
+  assume-screen 10:literal/width, 5:literal/height
+  1:address:array:character <- new [123
+456]
+  2:address:editor-data <- new-editor 1:address:array:character, screen:address, 0:literal/left, 10:literal/right
+  # start past end of line
+  assume-console [
+    left-click 1, 3
+    type [k]  # ctrl-k
+  ]
+  3:event/ctrl-k <- merge 0:literal/text, 11:literal/ctrl-k, 0:literal/dummy, 0:literal/dummy
+  replace-in-console 107:literal/k, 3:event/ctrl-k
+  run [
+    editor-event-loop screen:address, console:address, 2:address:editor-data
+  ]
+  # cursor deletes to end of line
+  screen-should-contain [
+    .          .
+    .123       .
+    .456       .
+    .          .
+  ]
+]
+
+scenario editor-deletes-to-end-of-line-with-ctrl-k-5 [
+  assume-screen 10:literal/width, 5:literal/height
+  1:address:array:character <- new [123
+456]
+  2:address:editor-data <- new-editor 1:address:array:character, screen:address, 0:literal/left, 10:literal/right
+  # start at end of text
+  assume-console [
+    left-click 2, 2
+    type [k]  # ctrl-k
+  ]
+  3:event/ctrl-k <- merge 0:literal/text, 11:literal/ctrl-k, 0:literal/dummy, 0:literal/dummy
+  replace-in-console 107:literal/k, 3:event/ctrl-k
+  run [
+    editor-event-loop screen:address, console:address, 2:address:editor-data
+  ]
+  # cursor deletes to end of line
+  screen-should-contain [
+    .          .
+    .123       .
+    .45        .
+    .          .
+  ]
+]
+
+scenario editor-deletes-to-end-of-line-with-ctrl-k-6 [
+  assume-screen 10:literal/width, 5:literal/height
+  1:address:array:character <- new [123
+456]
+  2:address:editor-data <- new-editor 1:address:array:character, screen:address, 0:literal/left, 10:literal/right
+  # start past end of text
+  assume-console [
+    left-click 2, 3
+    type [k]  # ctrl-k
+  ]
+  3:event/ctrl-k <- merge 0:literal/text, 11:literal/ctrl-k, 0:literal/dummy, 0:literal/dummy
+  replace-in-console 107:literal/k, 3:event/ctrl-k
+  run [
+    editor-event-loop screen:address, console:address, 2:address:editor-data
+  ]
+  # cursor deletes to end of line
+  screen-should-contain [
+    .          .
+    .123       .
+    .456       .
+    .          .
+  ]
+]
+
 scenario point-at-multiple-editors [
   assume-screen 30:literal/width, 5:literal/height
   # initialize both halves of screen