diff options
author | shadmansaleh <13149513+shadmansaleh@users.noreply.github.com> | 2022-02-12 10:54:25 +0600 |
---|---|---|
committer | shadmansaleh <13149513+shadmansaleh@users.noreply.github.com> | 2022-02-13 01:23:23 +0600 |
commit | f292dd2126f8dacd6446799ac750ab368b852f81 (patch) | |
tree | aea236d948d39ba14619322ab7d5fe6df438d592 /src/nvim/api/vim.c | |
parent | f89f4b1e12d97a78a86efbe80b23bf60f4d07d73 (diff) | |
download | rneovim-f292dd2126f8dacd6446799ac750ab368b852f81.tar.gz rneovim-f292dd2126f8dacd6446799ac750ab368b852f81.tar.bz2 rneovim-f292dd2126f8dacd6446799ac750ab368b852f81.zip |
fix: autoload variables not loaded with vim.g & nvim_get_var
Diffstat (limited to 'src/nvim/api/vim.c')
-rw-r--r-- | src/nvim/api/vim.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c index f7c55344f5..f4909b0801 100644 --- a/src/nvim/api/vim.c +++ b/src/nvim/api/vim.c @@ -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. |