summaryrefslogtreecommitdiff
path: root/src/dged/buffer_view.c
diff options
context:
space:
mode:
authorAlbert Cervin <albert@acervin.com>2025-11-24 22:47:13 +0100
committerAlbert Cervin <albert@acervin.com>2025-11-24 22:47:13 +0100
commitfb91c582ad5b552f3ed081fb2737d682a7cad181 (patch)
tree688312321a5e604ad2a862dd9c0bdb0385291bcc /src/dged/buffer_view.c
parent70c89b5c85f03d39f035c02946f7a3d9407103f6 (diff)
downloaddged-fb91c582ad5b552f3ed081fb2737d682a7cad181.tar.gz
dged-fb91c582ad5b552f3ed081fb2737d682a7cad181.tar.xz
dged-fb91c582ad5b552f3ed081fb2737d682a7cad181.zip
Fall back to delete when not in word
When deleting a word, you could get "stuck" on non-word chars. To avoid this, fall back to delete word being a normal delete when not in a word.
Diffstat (limited to 'src/dged/buffer_view.c')
-rw-r--r--src/dged/buffer_view.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/dged/buffer_view.c b/src/dged/buffer_view.c
index 390b7ff..76a3b5b 100644
--- a/src/dged/buffer_view.c
+++ b/src/dged/buffer_view.c
@@ -228,6 +228,12 @@ void buffer_view_delete_word(struct buffer_view *view) {
if (region_has_size(word)) {
buffer_delete(view->buffer, word);
view->dot = word.begin;
+ } else {
+ // fall back to being a normal delete to keep
+ // progressing
+ view->dot = buffer_delete(
+ view->buffer,
+ region_new(view->dot, buffer_next_char(view->buffer, view->dot)));
}
buffer_push_undo_boundary(view->buffer);
}