about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-08-04 13:19:56 -0700
committerKartik K. Agaram <vc@akkartik.com>2015-08-04 13:19:56 -0700
commit563b99c33a704f653674d761a6873efc5e58b36b (patch)
tree0312ec4257db7a4940a03f81239e80f17d3aaf33
parent146be7095129a8542474f6ca867ecda01d0a042b (diff)
downloadmu-563b99c33a704f653674d761a6873efc5e58b36b.tar.gz
1928 - bugfix: ctrl-u
-rw-r--r--edit.mu31
1 files changed, 29 insertions, 2 deletions
diff --git a/edit.mu b/edit.mu
index b4e43541..8351ad10 100644
--- a/edit.mu
+++ b/edit.mu
@@ -2181,8 +2181,11 @@ recipe delete-to-start-of-line [
   # snip it out
   start-next:address:address:duplex-list <- get-address *start, next:offset
   *start-next <- copy end
-  end-prev:address:address:duplex-list <- get-address *end, prev:offset
-  *end-prev <- copy start
+  {
+    break-unless end
+    end-prev:address:address:duplex-list <- get-address *end, prev:offset
+    *end-prev <- copy start
+  }
   # adjust cursor
   *before-cursor <- prev-duplex end
   left:number <- get *editor, left:offset
@@ -2238,6 +2241,30 @@ scenario editor-deletes-to-start-of-line-with-ctrl-u-3 [
   ]
 ]
 
+scenario editor-deletes-to-start-of-final-line-with-ctrl-u [
+  assume-screen 10/width, 5/height
+  1:address:array:character <- new [123
+456]
+  2:address:editor-data <- new-editor 1:address:array:character, screen:address, 0/left, 10/right
+  # start past end of final line, press ctrl-u
+  assume-console [
+    left-click 2, 3
+    type [u]  # ctrl-u
+  ]
+  3:event/ctrl-u <- merge 0/text, 21/ctrl-u, 0/dummy, 0/dummy
+  replace-in-console 117/u, 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 [
+    .          .
+    .123       .
+    .          .
+    .          .
+  ]
+]
+
 # ctrl-k - delete text from cursor to end of line (but not the newline)
 
 scenario editor-deletes-to-end-of-line-with-ctrl-k [