neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit c87a5ebbc31c56867f9d6f6d27bb8b7ddecc837e
parent 2b539d6fdf985d765ce03964be320c69d02b376c
Author: bfredl <bjorn.linse@gmail.com>
Date:   Sat, 11 Jun 2022 11:32:23 +0200

Merge pull request #18428 from bfredl/do_source

feat(api): nvim__get_runtime do_source
Diffstat:
Msrc/nvim/api/keysets.lua | 1+
Msrc/nvim/api/vim.c | 17++++++++++++++++-
2 files changed, 17 insertions(+), 1 deletion(-)

diff --git 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 @@ -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.