fix: autoload variables not loaded with vim.g & nvim_get_var

This commit is contained in:
shadmansaleh
2022-02-12 10:54:25 +06:00
parent f89f4b1e12
commit f292dd2126
4 changed files with 50 additions and 1 deletions

View File

@@ -601,7 +601,19 @@ void nvim_del_current_line(Error *err)
Object nvim_get_var(String name, Error *err)
FUNC_API_SINCE(1)
{
return dict_get_value(&globvardict, name, err);
dictitem_T *di = tv_dict_find(&globvardict, name.data, (ptrdiff_t)name.size);
if (di == NULL) { // try to autoload script
if (!script_autoload(name.data, name.size, false) || aborting()) {
api_set_error(err, kErrorTypeValidation, "Key not found: %s", name.data);
return (Object)OBJECT_INIT;
}
di = tv_dict_find(&globvardict, name.data, (ptrdiff_t)name.size);
}
if (di == NULL) {
api_set_error(err, kErrorTypeValidation, "Key not found: %s", name.data);
return (Object)OBJECT_INIT;
}
return vim_to_object(&di->di_tv);
}
/// Sets a global (g:) variable.