summaryrefslogtreecommitdiffstats
path: root/src/evalfunc.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-07-29 15:34:26 +0200
committerBram Moolenaar <Bram@vim.org>2018-07-29 15:34:26 +0200
commit612cc3888b136e80485132d9f997ed457dbc5501 (patch)
treed200810f73b2c0c5626b249c8dbf0384448e19c8 /src/evalfunc.c
parent91f84f6e11cd879d43d651c0903d85bff95f0716 (diff)
patch 8.1.0225: mode() does not indicate using CTRL-O from Insert modev8.1.0225
Problem: Mode() does not indicate using CTRL-O from Insert mode. Solution: Add "niI", "niR" and "niV" to mode() result. (closes #3000)
Diffstat (limited to 'src/evalfunc.c')
-rw-r--r--src/evalfunc.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 12eac8d548..40fbf373a4 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -8366,10 +8366,9 @@ f_mkdir(typval_T *argvars, typval_T *rettv)
static void
f_mode(typval_T *argvars, typval_T *rettv)
{
- char_u buf[3];
+ char_u buf[4];
- buf[1] = NUL;
- buf[2] = NUL;
+ vim_memset(buf, 0, sizeof(buf));
if (time_for_testing == 93784)
{
@@ -8435,6 +8434,12 @@ f_mode(typval_T *argvars, typval_T *rettv)
buf[0] = 'n';
if (finish_op)
buf[1] = 'o';
+ else if (restart_edit == 'I' || restart_edit == 'R'
+ || restart_edit == 'V')
+ {
+ buf[1] = 'i';
+ buf[2] = restart_edit;
+ }
}
/* Clear out the minor mode when the argument is not a non-zero number or