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; break;
case CTRL_KEY('L'): case CTRL_KEY('L'):
case ESCAPE:
case NOP: case NOP:
break; break;

View file

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