summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko2015-03-12 21:15:34 +0100
committerDenys Vlasenko2015-03-12 21:15:34 +0100
commit49acc1a7618a28d34381cbb7661d7c981fcb238f (patch)
tree2db80507928e5da140e15c7a8f2b06d1ae84f0c4
parent8ec1ff350c28ae691ee80a001c7786f4ad8abe47 (diff)
downloadbusybox-49acc1a7618a28d34381cbb7661d7c981fcb238f.zip
busybox-49acc1a7618a28d34381cbb7661d7c981fcb238f.tar.gz
vi: make BACKSPACE and DELETE join lines at start/end of line
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--editors/vi.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/editors/vi.c b/editors/vi.c
index 77535be..495332a 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