aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/api/vim.c
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2022-02-13 10:32:32 +0100
committerGitHub <noreply@github.com>2022-02-13 10:32:32 +0100
commitf378df846cee43a17e0d8da22fb1cb7516bcf39c (patch)
tree88ea5b0daa4b7b51f0cba705f3d2fb725ca8ecd8 /src/nvim/api/vim.c
parent6f5fae08a302bce6de453425a6b1c1d851112914 (diff)
parentf292dd2126f8dacd6446799ac750ab368b852f81 (diff)
downloadrneovim-f378df846cee43a17e0d8da22fb1cb7516bcf39c.tar.gz
rneovim-f378df846cee43a17e0d8da22fb1cb7516bcf39c.tar.bz2
rneovim-f378df846cee43a17e0d8da22fb1cb7516bcf39c.zip
Merge pull request #17375 from shadmansaleh/fix/vim.g/autoload
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.c14
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.