aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/lua/executor.c
diff options
context:
space:
mode:
authorbfredl <bjorn.linse@gmail.com>2022-05-26 15:03:07 +0200
committerGitHub <noreply@github.com>2022-05-26 15:03:07 +0200
commit30915cc8b0e8b92cb83a23833c7a1116e20c055d (patch)
tree83d82ea8e54de3d2b8c29218da465af679ea6845 /src/nvim/lua/executor.c
parent497046466e4a969cefce5fc2b7992dde157aa1a5 (diff)
parent8a73e60eb97a0402caf57986ece1e87b7365ae00 (diff)
downloadrneovim-30915cc8b0e8b92cb83a23833c7a1116e20c055d.tar.gz
rneovim-30915cc8b0e8b92cb83a23833c7a1116e20c055d.tar.bz2
rneovim-30915cc8b0e8b92cb83a23833c7a1116e20c055d.zip
Merge pull request #18306 from lewis6991/fnfast
feat(lua): allow some viml functions to run in fast
Diffstat (limited to 'src/nvim/lua/executor.c')
-rw-r--r--src/nvim/lua/executor.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/nvim/lua/executor.c b/src/nvim/lua/executor.c
index f63f1ee52f..0009420281 100644
--- a/src/nvim/lua/executor.c
+++ b/src/nvim/lua/executor.c
@@ -914,12 +914,22 @@ int nlua_in_fast_event(lua_State *lstate)
return 1;
}
+static bool viml_func_is_fast(const char *name)
+{
+ const EvalFuncDef *const fdef = find_internal_func((const char *)name);
+ if (fdef) {
+ return fdef->fast;
+ }
+ // Not a vimL function
+ return false;
+}
+
int nlua_call(lua_State *lstate)
{
Error err = ERROR_INIT;
size_t name_len;
const char *name = luaL_checklstring(lstate, 1, &name_len);
- if (!nlua_is_deferred_safe()) {
+ if (!nlua_is_deferred_safe() && !viml_func_is_fast(name)) {
return luaL_error(lstate, e_luv_api_disabled, "vimL function");
}