CE edit handle backspace deletion into previous line
All checks were successful
Build documentation / build-and-deploy (push) Successful in 2m17s
All checks were successful
Build documentation / build-and-deploy (push) Successful in 2m17s
This commit is contained in:
18
ce/edit.c
18
ce/edit.c
@@ -227,6 +227,24 @@ void edit_start (const char* file_path, const char* text) {
|
||||
gapbuffer_move (&editor.current_line->gb, editor.cursor.col);
|
||||
editor.cursor.col--;
|
||||
gapbuffer_backspace (&editor.current_line->gb);
|
||||
} else {
|
||||
if (editor.cursor.line > 0) {
|
||||
struct list_node_link* prev = editor.current_line->lines_link.prev;
|
||||
struct edit_line* prev_line = list_entry (prev, struct edit_line, lines_link);
|
||||
|
||||
size_t prev_len = gapbuffer_length (&prev_line->gb);
|
||||
|
||||
gapbuffer_concat (&wrealloc, NULL, &prev_line->gb, &editor.current_line->gb);
|
||||
|
||||
list_remove (editor.lines, &editor.current_line->lines_link);
|
||||
free (editor.current_line->gb.buffer);
|
||||
free (editor.current_line);
|
||||
editor.current_line = prev_line;
|
||||
|
||||
editor.cursor.col = prev_len;
|
||||
editor.cursor.line--;
|
||||
editor.total_lines--;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user