summaryrefslogtreecommitdiff
path: root/src/buffer.c
diff options
context:
space:
mode:
authorAlbert Cervin <albert@acervin.com>2022-11-18 10:55:49 +0100
committerAlbert Cervin <albert@acervin.com>2022-11-25 23:09:13 +0100
commitc40a1cfa0f1ecfddac06c7143c2dd974126ddad3 (patch)
tree95410887b40166226e2c86001eb923cc51d8373d /src/buffer.c
parent2f4cb88d5c60f725323739300bb49dfa8923e7d5 (diff)
downloaddged-c40a1cfa0f1ecfddac06c7143c2dd974126ddad3.tar.gz
dged-c40a1cfa0f1ecfddac06c7143c2dd974126ddad3.tar.xz
dged-c40a1cfa0f1ecfddac06c7143c2dd974126ddad3.zip
Rework delete logic a bit
It now handles a range of characters and correctly merges lines. It is not the most slick implementation but it works as a start.
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/buffer.c b/src/buffer.c
index e08bca5..fb071da 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -98,14 +98,13 @@ void moveh(struct buffer *buffer, int coldelta) {
}
}
+void buffer_forward_delete_char(struct buffer *buffer) {
+ text_delete(buffer->text, buffer->dot_line, buffer->dot_col, 1);
+}
+
void buffer_backward_delete_char(struct buffer *buffer) {
- // TODO: merge lines
- if (text_line_length(buffer->text, buffer->dot_line) == 0) {
- text_delete_line(buffer->text, buffer->dot_line);
- } else if (buffer->dot_col > 0) {
- text_delete(buffer->text, buffer->dot_line, buffer->dot_col - 1, 1);
- }
moveh(buffer, -1);
+ buffer_forward_delete_char(buffer);
}
void buffer_backward_char(struct buffer *buffer) { moveh(buffer, -1); }