Add backspacing to prompt
This commit is contained in:
parent
697a764ae8
commit
bb637bab94
2 changed files with 21 additions and 10 deletions
|
@ -31,6 +31,7 @@ void input_process_key(KEY c) {
|
|||
break;
|
||||
|
||||
case CTRL_KEY('L'):
|
||||
case ESCAPE:
|
||||
case NOP:
|
||||
break;
|
||||
|
||||
|
|
16
src/kilo.c
16
src/kilo.c
|
@ -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);
|
||||
|
|
Reference in a new issue