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,11 +71,20 @@ char *editor_prompt(const char *prompt) {
ui_draw_screen();
KEY key = terminal_read_key();
if (key == ESCAPE) goto failure;
else if (key == ENTER) {
switch (key) {
case BACKSPACE:
if (buf_size > 0)
buf[--buf_size] = '\0';
break;
case ENTER:
if (buf_size > 0) goto success;
else goto failure;
} else if (isprint(key)) {
break;
case ESCAPE:
goto failure;
break;
default:
if (isprint(key)) {
if (buf_size + 1 >= buf_cap)
buf = realloc(buf, buf_cap *= 2);
@ -84,6 +93,7 @@ char *editor_prompt(const char *prompt) {
buf[buf_size] = '\0';
}
}
}
failure:
free(buf);