diff options
author | Ron Yorston | 2021-06-16 14:45:10 +0100 |
---|---|---|
committer | Denys Vlasenko | 2021-06-16 23:53:03 +0200 |
commit | f1d21b743485defb39fada03b27878efb1e2f7e3 (patch) | |
tree | d46277dd061921c86e97571bf96f899391501baf | |
parent | e7a8e8e30c31977476ab3be2fadb38c2bcb92482 (diff) | |
download | busybox-f1d21b743485defb39fada03b27878efb1e2f7e3.zip busybox-f1d21b743485defb39fada03b27878efb1e2f7e3.tar.gz |
vi: keep autoindent if line isn't empty
When ESC is entered to leave insert mode any autoindent should only
be removed if there's no content beyond the indent. This may be the
case if a line has been split by entering insert mode and then
entering a CR.
Add a check to ensure there's only a newline after the indent.
function old new delta
char_insert 912 929 +17
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/0 up/down: 17/0) Total: 17 bytes
Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | editors/vi.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/editors/vi.c b/editors/vi.c index ba608fb..3daa075 100644 --- a/editors/vi.c +++ b/editors/vi.c @@ -2147,7 +2147,7 @@ static char *char_insert(char *p, char c, int undo) // insert the char c at 'p' #if ENABLE_FEATURE_VI_SETOPTS if (autoindent) { len = indent_len(bol); - if (len && get_column(bol + len) == indentcol) { + if (len && get_column(bol + len) == indentcol && bol[len] == '\n') { // remove autoindent from otherwise empty line text_hole_delete(bol, bol + len - 1, undo); p = bol; |