From 80c0ba248b11d650a4ec932813d65c3f2bcac342 Mon Sep 17 00:00:00 2001 From: Steve Bennett Date: Thu, 29 Sep 2011 13:42:15 +1000 Subject: [PATCH] Support more HOME/END escape sequences HOME: \e[7~ END: \e[8~ Signed-off-by: Steve Bennett --- linenoise.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/linenoise.c b/linenoise.c index 8615508..cc51462 100644 --- a/linenoise.c +++ b/linenoise.c @@ -453,16 +453,22 @@ static int check_special(int fd) return SPECIAL_HOME; } } - if (c == '[' && c2 >= '1' && c2 <= '6') { + if (c == '[' && c2 >= '1' && c2 <= '8') { /* extended escape */ - int c3 = fd_read_char(fd, 50); - if (c2 == '3' && c3 == '~') { - /* delete char under cursor */ - return SPECIAL_DELETE; + c = fd_read_char(fd, 50); + if (c == '~') { + switch (c2) { + case '3': + return SPECIAL_DELETE; + case '7': + return SPECIAL_HOME; + case '8': + return SPECIAL_END; + } } - while (c3 != -1 && c3 != '~') { + while (c != -1 && c != '~') { /* .e.g \e[12~ or '\e[11;2~ discard the complete sequence */ - c3 = fd_read_char(fd, 50); + c = fd_read_char(fd, 50); } } -- 2.44.0