diff options
author | bfredl <bjorn.linse@gmail.com> | 2022-05-05 12:33:35 +0200 |
---|---|---|
committer | bfredl <bjorn.linse@gmail.com> | 2022-06-11 10:25:59 +0200 |
commit | e92fcdbab204f49c542ba4cf330aba1258fb2968 (patch) | |
tree | d704fb21c1a3d47e82703edda1fc0102bff249eb | |
parent | 2b539d6fdf985d765ce03964be320c69d02b376c (diff) | |
download | rneovim-e92fcdbab204f49c542ba4cf330aba1258fb2968.tar.gz rneovim-e92fcdbab204f49c542ba4cf330aba1258fb2968.tar.bz2 rneovim-e92fcdbab204f49c542ba4cf330aba1258fb2968.zip |
feat(api): nvim__get_runtime do_source
-rw-r--r-- | src/nvim/api/keysets.lua | 1 | ||||
-rw-r--r-- | src/nvim/api/vim.c | 17 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/nvim/api/keysets.lua b/src/nvim/api/keysets.lua index 881a83e606..70e91dd844 100644 --- a/src/nvim/api/keysets.lua +++ b/src/nvim/api/keysets.lua @@ -75,6 +75,7 @@ return { }; runtime = { "is_lua"; + "do_source"; }; eval_statusline = { "winid"; diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c index 9430a37d27..1e44250ec3 100644 --- a/src/nvim/api/vim.c +++ b/src/nvim/api/vim.c @@ -562,10 +562,25 @@ ArrayOf(String) nvim__get_runtime(Array pat, Boolean all, Dict(runtime) *opts, E FUNC_API_FAST { bool is_lua = api_object_to_bool(opts->is_lua, "is_lua", false, err); + bool source = api_object_to_bool(opts->do_source, "do_source", false, err); + if (source && !nlua_is_deferred_safe()) { + api_set_error(err, kErrorTypeValidation, "'do_source' cannot be used in fast callback"); + } + if (ERROR_SET(err)) { return (Array)ARRAY_DICT_INIT; } - return runtime_get_named(is_lua, pat, all); + + ArrayOf(String) res = runtime_get_named(is_lua, pat, all); + + if (source) { + for (size_t i = 0; i < res.size; i++) { + String name = res.items[i].data.string; + (void)do_source(name.data, false, DOSO_NONE); + } + } + + return res; } /// Changes the global working directory. |