vim-patch:8.2.4723: the ModeChanged autocmd event is inefficient

Problem:    The ModeChanged autocmd event is inefficient.
Solution:   Avoid allocating memory. (closes vim/vim#10134)  Rename
            trigger_modechanged() to may_trigger_modechanged().
2bf52dd065

Make v:event readonly for ModeChanged.
This commit is contained in:
zeertzjq
2022-04-10 07:20:35 +08:00
parent ff726cc569
commit 263a7fde35
12 changed files with 77 additions and 71 deletions

View File

@@ -6094,15 +6094,17 @@ static void f_mkdir(typval_T *argvars, typval_T *rettv, FunPtr fptr)
/// "mode()" function
static void f_mode(typval_T *argvars, typval_T *rettv, FunPtr fptr)
{
char *mode = get_mode();
char buf[MODE_MAX_LENGTH];
get_mode(buf);
// Clear out the minor mode when the argument is not a non-zero number or
// non-empty string.
if (!non_zero_arg(&argvars[0])) {
mode[1] = NUL;
buf[1] = NUL;
}
rettv->vval.v_string = (char_u *)mode;
rettv->vval.v_string = vim_strsave((char_u *)buf);
rettv->v_type = VAR_STRING;
}