diff options
Diffstat (limited to 'src/dged')
| -rw-r--r-- | src/dged/buffer.c | 28 | ||||
| -rw-r--r-- | src/dged/buffer.h | 2 |
2 files changed, 30 insertions, 0 deletions
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); |
