From 750b8106f71336cf5d871740f9cea792ce996a39 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Fri, 17 Apr 2009 12:36:21 +0000 Subject: [PATCH] Remove the right number of characters from the buffer when escape then a cursor key (or other key prefixed by \033) is pressed. Reported by Stuart Henderson. --- CHANGES | 8 +++++++- tty-keys.c | 8 ++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/CHANGES b/CHANGES index 8f25ac06..ac310676 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,9 @@ +17 April 2009 + +* Remove the right number of characters from the buffer when escape then + a cursor key (or other key prefixed by \033) is pressed. Reported by + Stuart Henderson. + 03 April 2009 * rotate-window command. -U flag (default) for up, -D flag for down. @@ -1198,7 +1204,7 @@ (including mutt, emacs). No status bar yet and no key remapping or other customisation. -$Id: CHANGES,v 1.271 2009-04-03 17:21:46 nicm Exp $ +$Id: CHANGES,v 1.272 2009-04-17 12:36:21 nicm Exp $ LocalWords: showw utf UTF fulvio ciriaco joshe OSC APC gettime abc DEF OA clr LocalWords: rivo nurges lscm Erdely eol smysession mysession ek dstname RB ms diff --git a/tty-keys.c b/tty-keys.c index 56299fc9..7492f9da 100644 --- a/tty-keys.c +++ b/tty-keys.c @@ -1,4 +1,4 @@ -/* $Id: tty-keys.c,v 1.24 2009-03-02 18:05:40 nicm Exp $ */ +/* $Id: tty-keys.c,v 1.25 2009-04-17 12:36:21 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -299,13 +299,13 @@ tty_keys_next(struct tty *tty, int *key, u_char *mouse) if (len > 1) { tk = tty_keys_find(tty, buf + 1, len - 1, &size); if (tk != NULL) { - buffer_remove(tty->in, size + 1); + buffer_remove(tty->in, size + 2); *key = KEYC_ADDESC(tk->key); goto found; } } - /* If the timer hasn't expired, keep waiting . */ + /* If the timer hasn't expired, keep waiting. */ if (gettimeofday(&tv, NULL) != 0) fatal("gettimeofday"); if (timercmp(&tty->key_timer, &tv, >)) @@ -405,7 +405,7 @@ tty_keys_parse_xterm(struct tty *tty, char *buf, size_t len, size_t *size) key = KEYC_ADDESC(key); break; case '2': - key = KEYC_ADDSFT(key); + key = KEYC_ADDSFT(key); break; }