fix: autocomplete working again (ratio starnakin) and clean some stuff

This commit is contained in:
2024-12-19 11:03:09 +01:00
parent 4028372475
commit 61debdcb85
4 changed files with 682 additions and 51 deletions

View File

@ -76,36 +76,35 @@ static void auto_complete(void)
kprintf("%c", screen->line[i]);
}
}
void terminal_putentryat(struct font node, uint32_t fg_color, uint32_t bg_color,
size_t x, size_t y);
struct font get_font_node(int c);
static char *get_line(void)
{
size_t i = 0;
struct key_event ev;
const size_t size = sizeof(screen->line);
do {
while (1) {
ev = get_key();
if (!ev.scan_code)
continue;
if (ev.c == '\n')
break;
char *buf = screen->line;
i = strlen(screen->line);
if (ev.scan_code == KEY_BACKSPACE) {
if (!i)
continue;
terminal_remove_last_char();
buf[--i] = '\0';
} else if (ev.scan_code == KEY_TAB && i) {
auto_complete();
} else if (ev.c && i < size - 1) {
kprintf("%c", ev.c);
buf[i++] = ev.c;
const size_t size = sizeof(screen->line);
if (ev.scan_code) {
if (ev.scan_code == KEY_BACKSPACE) {
if (!i)
continue;
buf[--i] = '\0';
terminal_remove_last_char();
} else if (ev.scan_code == KEY_TAB && i) {
auto_complete();
} else if (ev.c && i < size - 1) {
kprintf("%c", ev.c);
buf[i++] = ev.c;
}
if (i >= size)
break;
}
} while (i < size);
}
kprintf("\n");
screen->line[i] = '\0';
return screen->line;