From: Steve Bennett Date: Thu, 29 Sep 2011 03:42:15 +0000 (+1000) Subject: Support more HOME/END escape sequences X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=80c0ba248b11d650a4ec932813d65c3f2bcac342;p=linenoise.git Support more HOME/END escape sequences HOME: \e[7~ END: \e[8~ Signed-off-by: Steve Bennett --- 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); } }