diff options
| author | Albert Cervin <albert@acervin.com> | 2025-11-24 22:47:13 +0100 |
|---|---|---|
| committer | Albert Cervin <albert@acervin.com> | 2025-11-24 22:47:13 +0100 |
| commit | fb91c582ad5b552f3ed081fb2737d682a7cad181 (patch) | |
| tree | 688312321a5e604ad2a862dd9c0bdb0385291bcc | |
| parent | 70c89b5c85f03d39f035c02946f7a3d9407103f6 (diff) | |
| download | dged-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.
| -rw-r--r-- | src/dged/buffer_view.c | 6 |
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); } |
