From: Steve Bennett Date: Thu, 29 Sep 2011 03:42:52 +0000 (+1000) Subject: Combine some duplicate code X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=d9d8f323ca04ca6a5546f176ea5f5d0d745d6b66;p=linenoise.git Combine some duplicate code Signed-off-by: Steve Bennett --- diff --git a/linenoise.c b/linenoise.c index cc51462..9740366 100644 --- a/linenoise.c +++ b/linenoise.c @@ -981,8 +981,9 @@ process_char: free(history[history_len]); return -1; } - /* Otherwise delete char to right of cursor */ - if (remove_char(current, current->pos)) { + /* Otherwise fall through to delete char to right of cursor */ + case SPECIAL_DELETE: + if (remove_char(current, current->pos) == 1) { refreshLine(current->prompt, current); } break; @@ -1168,28 +1169,16 @@ process_char: refreshLine(current->prompt, current); } break; - - case SPECIAL_DELETE: - if (remove_char(current, current->pos) == 1) { - refreshLine(current->prompt, current); - } - break; + case ctrl('A'): /* Ctrl+a, go to the start of the line */ case SPECIAL_HOME: current->pos = 0; refreshLine(current->prompt, current); break; + case ctrl('E'): /* ctrl+e, go to the end of the line */ case SPECIAL_END: current->pos = current->chars; refreshLine(current->prompt, current); break; - default: - /* Only tab is allowed without ^V */ - if (c == '\t' || c >= ' ') { - if (insert_char(current, current->pos, c) == 1) { - refreshLine(current->prompt, current); - } - } - break; case ctrl('U'): /* Ctrl+u, delete to beginning of line. */ if (remove_chars(current, 0, current->pos)) { refreshLine(current->prompt, current); @@ -1200,21 +1189,20 @@ process_char: refreshLine(current->prompt, current); } break; - case ctrl('A'): /* Ctrl+a, go to the start of the line */ - current->pos = 0; - refreshLine(current->prompt, current); - break; - case ctrl('E'): /* ctrl+e, go to the end of the line */ - current->pos = current->chars; - refreshLine(current->prompt, current); - break; case ctrl('L'): /* Ctrl+L, clear screen */ - /* clear screen */ clearScreen(current); /* Force recalc of window size for serial terminals */ current->cols = 0; refreshLine(current->prompt, current); break; + default: + /* Only tab is allowed without ^V */ + if (c == '\t' || c >= ' ') { + if (insert_char(current, current->pos, c) == 1) { + refreshLine(current->prompt, current); + } + } + break; } } return current->len;