Merge pull request #12575 from cbarrete/vim-8.2.0935

[RFC] vim-patch:8.2.{0935,0937}
This commit is contained in:
Matthieu Coudron
2020-07-20 22:04:30 +02:00
committed by GitHub
6 changed files with 190 additions and 0 deletions

View File

@@ -2160,6 +2160,42 @@ static void f_expandcmd(typval_T *argvars, typval_T *rettv, FunPtr fptr)
rettv->vval.v_string = cmdstr;
}
/// "flatten(list[, {maxdepth}])" function
static void f_flatten(typval_T *argvars, typval_T *rettv, FunPtr fptr)
{
list_T *list;
long maxdepth;
bool error = false;
if (argvars[0].v_type != VAR_LIST) {
EMSG2(_(e_listarg), "flatten()");
return;
}
if (argvars[1].v_type == VAR_UNKNOWN) {
maxdepth = 999999;
} else {
maxdepth = (long)tv_get_number_chk(&argvars[1], &error);
if (error) {
return;
}
if (maxdepth < 0) {
EMSG(_("E900: maxdepth must be non-negative number"));
return;
}
}
list = argvars[0].vval.v_list;
if (list != NULL
&& !tv_check_lock(tv_list_locked(list),
N_("flatten() argument"),
TV_TRANSLATE)
&& tv_list_flatten(list, maxdepth) == OK) {
tv_copy(&argvars[0], rettv);
}
}
/*
* "extend(list, list [, idx])" function
* "extend(dict, dict [, action])" function