Compare commits

...

2 Commits

Author SHA1 Message Date
37d73f63e3 CE edit handle tab key
All checks were successful
Build documentation / build-and-deploy (push) Successful in 2m11s
2026-03-07 00:35:39 +01:00
a11b2103da CE edit improve spacing 2026-03-07 00:25:42 +01:00

View File

@@ -23,6 +23,8 @@
#define STATUS_LINE_STYLE ANSIQ_GR_SEQ (ANSIQ_BG_RGB (240, 191, 88) ANSIQ_FG_BLACK) #define STATUS_LINE_STYLE ANSIQ_GR_SEQ (ANSIQ_BG_RGB (240, 191, 88) ANSIQ_FG_BLACK)
#define TAB_INSERT " "
struct edit_line { struct edit_line {
struct list_node_link lines_link; struct list_node_link lines_link;
struct gapbuffer gb; struct gapbuffer gb;
@@ -130,7 +132,7 @@ void edit_start (const char* file_path, const char* text) {
list_foreach (editor.lines, line_link, tmp_line_link) editor.total_lines++; list_foreach (editor.lines, line_link, tmp_line_link) editor.total_lines++;
size_t gutter_width = count_digits (editor.total_lines); size_t gutter_width = count_digits (editor.total_lines);
size_t effective_cols = (cols > gutter_width + 1) ? cols - (gutter_width + 1) : cols; size_t effective_cols = (cols > gutter_width + 3) ? cols - (gutter_width + 3) : cols;
list_foreach (editor.lines, line_link, tmp_line_link) { list_foreach (editor.lines, line_link, tmp_line_link) {
if (current_idx < editor.row_offset) { if (current_idx < editor.row_offset) {
@@ -147,7 +149,7 @@ void edit_start (const char* file_path, const char* text) {
bbptr += w; bbptr += w;
bb_remaining -= w; bb_remaining -= w;
w = snprintf (bbptr, bb_remaining, LINE_NUMBERS_STYLE "%*zu " ANSIQ_GR_RESET, w = snprintf (bbptr, bb_remaining, LINE_NUMBERS_STYLE " %*zu " ANSIQ_GR_RESET " ",
(int)gutter_width, current_idx + 1); (int)gutter_width, current_idx + 1);
bbptr += w; bbptr += w;
bb_remaining -= w; bb_remaining -= w;
@@ -212,7 +214,7 @@ void edit_start (const char* file_path, const char* text) {
w = snprintf (bbptr, bb_remaining, ANSIQ_DYN_CUR_SET ANSIQ_CUR_VISIBLE, w = snprintf (bbptr, bb_remaining, ANSIQ_DYN_CUR_SET ANSIQ_CUR_VISIBLE,
(int)(editor.cursor.line - editor.row_offset) + 1, (int)(editor.cursor.line - editor.row_offset) + 1,
(int)(editor.cursor.col - editor.col_offset) + 1 + (int)gutter_width + 1); (int)(editor.cursor.col - editor.col_offset) + 1 + (int)gutter_width + 3);
bbptr += w; bbptr += w;
bb_remaining -= w; bb_remaining -= w;
@@ -229,6 +231,13 @@ void edit_start (const char* file_path, const char* text) {
gapbuffer_backspace (&editor.current_line->gb); gapbuffer_backspace (&editor.current_line->gb);
} }
break; break;
case '\t':
gapbuffer_move (&editor.current_line->gb, editor.cursor.col);
for (size_t i = 0; i < sizeof (TAB_INSERT) - 1; i++)
gapbuffer_insert (&wrealloc, NULL, &editor.current_line->gb, TAB_INSERT[i]);
editor.cursor.col += sizeof (TAB_INSERT) - 1;
break;
case '\n': { case '\n': {
gapbuffer_move (&editor.current_line->gb, editor.cursor.col); gapbuffer_move (&editor.current_line->gb, editor.cursor.col);