From: Denys Vlasenko Date: Thu, 12 Mar 2015 20:15:34 +0000 (+0100) Subject: vi: make BACKSPACE and DELETE join lines at start/end of line X-Git-Tag: 1_24_0~168 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=49acc1a7618a28d34381cbb7661d7c981fcb238f;p=oweals%2Fbusybox.git vi: make BACKSPACE and DELETE join lines at start/end of line Signed-off-by: Denys Vlasenko --- diff --git a/editors/vi.c b/editors/vi.c index 77535be92..495332a46 100644 --- a/editors/vi.c +++ b/editors/vi.c @@ -2017,8 +2017,7 @@ static char *char_insert(char *p, char c, int undo) // insert the char c at 'p' p--; } } else if (c == erase_char || c == 8 || c == 127) { // Is this a BS - // 123456789 - if ((p[-1] != '\n') && (dot>text)) { + if (p > text) { p--; p = text_hole_delete(p, p, ALLOW_UNDO_QUEUED); // shrink buffer 1 char } @@ -4026,8 +4025,9 @@ static void do_cmd(int c) undo_queue_commit(); break; case KEYCODE_DELETE: - c = 'x'; - // fall through + if (dot < end - 1) + dot = yank_delete(dot, dot, 1, YANKDEL, ALLOW_UNDO); + break; case 'X': // X- delete char before dot case 'x': // x- delete the current char case 's': // s- substitute the current char