diff --git a/editor.c b/editor.c index 22e7da2..ea0e79f 100644 --- a/editor.c +++ b/editor.c @@ -61,13 +61,20 @@ void buffer_insert(char ch, Buffer* buffer) { } } -void buffer_delete(Buffer* buffer) { +void buffer_delete_front(Buffer* buffer) { if (buffer->start != buffer->text) { buffer->start--; buffer->gap_size++; } } +void buffer_delete_back(Buffer* buffer) { + if (buffer->end != buffer->text + buffer->size) { + buffer->end++; + buffer->gap_size++; + } +} + void buffer_right(Buffer* buffer) { if (buffer->end != buffer->text + buffer->size) { char c = *(buffer->end); @@ -248,7 +255,11 @@ int main(int argc, char** argv) { switch(ch) { case KEY_BACKSPACE: - buffer_delete(buffer); + buffer_delete_front(buffer); + break; + + case KEY_DC: + buffer_delete_back(buffer); break; case KEY_LEFT: