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>
This commit is contained in:
parent
e7a8e8e30c
commit
f1d21b7434
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user