Archived
1
Fork 0

Add backspacing to prompt

This commit is contained in:
Hadeed 2023-09-11 10:07:48 +05:00
parent 697a764ae8
commit bb637bab94
2 changed files with 21 additions and 10 deletions

View file

@ -31,6 +31,7 @@ void input_process_key(KEY c) {
break;
case CTRL_KEY('L'):
case ESCAPE:
case NOP:
break;

View file

@ -71,17 +71,27 @@ char *editor_prompt(const char *prompt) {
ui_draw_screen();
KEY key = terminal_read_key();
if (key == ESCAPE) goto failure;
else if (key == ENTER) {
if (buf_size > 0) goto success;
else goto failure;
} else if (isprint(key)) {
if (buf_size + 1 >= buf_cap)
buf = realloc(buf, buf_cap *= 2);
switch (key) {
case BACKSPACE:
if (buf_size > 0)
buf[--buf_size] = '\0';
break;
case ENTER:
if (buf_size > 0) goto success;
else goto failure;
break;
case ESCAPE:
goto failure;
break;
default:
if (isprint(key)) {
if (buf_size + 1 >= buf_cap)
buf = realloc(buf, buf_cap *= 2);
buf[buf_size] = key;
buf_size++;
buf[buf_size] = '\0';
buf[buf_size] = key;
buf_size++;
buf[buf_size] = '\0';
}
}
}