From 67276833f9ede96dbc549c508f182c913240ac2c Mon Sep 17 00:00:00 2001 From: Albert Cervin Date: Wed, 10 May 2023 12:58:27 +0200 Subject: Implement word deletion M-d for forward, M-D for backward --- src/dged/buffer.c | 28 ++++++++++++++++++++++++++++ src/dged/buffer.h | 2 ++ 2 files changed, 30 insertions(+) (limited to 'src/dged') diff --git a/src/dged/buffer.c b/src/dged/buffer.c index f2e7eb9..e40281f 100644 --- a/src/dged/buffer.c +++ b/src/dged/buffer.c @@ -434,6 +434,34 @@ void buffer_backward_delete_char(struct buffer_view *view) { } } +void buffer_forward_delete_word(struct buffer_view *view) { + if (maybe_delete_region(view)) { + return; + } + + struct buffer_location start = view->dot; + buffer_forward_word(view); + struct buffer_location end = view->dot; + + buffer_goto(view, start.line, start.col); + + delete_with_undo(view->buffer, start, end); +} + +void buffer_backward_delete_word(struct buffer_view *view) { + if (maybe_delete_region(view)) { + return; + } + + struct buffer_location end = view->dot; + buffer_backward_word(view); + struct buffer_location start = view->dot; + + buffer_goto(view, start.line, start.col); + + delete_with_undo(view->buffer, start, end); +} + void buffer_backward_char(struct buffer_view *view) { moveh(view, -1); } void buffer_forward_char(struct buffer_view *view) { moveh(view, 1); } diff --git a/src/dged/buffer.h b/src/dged/buffer.h index 05b85de..e33733b 100644 --- a/src/dged/buffer.h +++ b/src/dged/buffer.h @@ -177,7 +177,9 @@ bool buffer_is_backed(struct buffer *buffer); void buffer_kill_line(struct buffer_view *view); void buffer_forward_delete_char(struct buffer_view *view); +void buffer_forward_delete_word(struct buffer_view *view); void buffer_backward_delete_char(struct buffer_view *view); +void buffer_backward_delete_word(struct buffer_view *view); void buffer_backward_char(struct buffer_view *view); void buffer_backward_word(struct buffer_view *view); void buffer_forward_char(struct buffer_view *view); -- cgit v1.2.3