diff options
-rw-r--r-- | editors/vi.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/editors/vi.c b/editors/vi.c index 6fa0a4e18..5b86b0516 100644 --- a/editors/vi.c +++ b/editors/vi.c | |||
@@ -2227,7 +2227,10 @@ static char *char_insert(char *p, char c, int undo) // insert the char c at 'p' | |||
2227 | p--; // open above, indent before newly inserted NL | 2227 | p--; // open above, indent before newly inserted NL |
2228 | 2228 | ||
2229 | if (len) { | 2229 | if (len) { |
2230 | indentcol = col; | 2230 | // only record indent if in insert/replace mode or for |
2231 | // the 'o'/'O' commands, which are switched to insert | ||
2232 | // mode early. | ||
2233 | indentcol = cmd_mode != 0 ? col : 0; | ||
2231 | if (expandtab) { | 2234 | if (expandtab) { |
2232 | ntab = 0; | 2235 | ntab = 0; |
2233 | nspc = col; | 2236 | nspc = col; |
@@ -4265,6 +4268,9 @@ static void do_cmd(int c) | |||
4265 | case 'o': // o- open an empty line below | 4268 | case 'o': // o- open an empty line below |
4266 | dot_end(); | 4269 | dot_end(); |
4267 | dc3: | 4270 | dc3: |
4271 | #if ENABLE_FEATURE_VI_SETOPTS | ||
4272 | cmd_mode = 1; // switch to insert mode early | ||
4273 | #endif | ||
4268 | dot = char_insert(dot, '\n', ALLOW_UNDO); | 4274 | dot = char_insert(dot, '\n', ALLOW_UNDO); |
4269 | if (c == 'O' && !autoindent) { | 4275 | if (c == 'O' && !autoindent) { |
4270 | // done in char_insert() for 'O'+autoindent | 4276 | // done in char_insert() for 'O'+autoindent |