aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorTJ DeVries <devries.timothyj@gmail.com>2020-07-11 17:40:31 -0400
committerGitHub <noreply@github.com>2020-07-11 17:40:31 -0400
commit1ca67a73c0ba680eb8328e68bea31f839855dd29 (patch)
tree6f770f564307cb8a31f6ead427114267fcba3953 /src/nvim/eval.c
parenta695da7d3fac19624d458e3f2980b4c0e55f50a4 (diff)
parent6360cf7ce87407bd8a519b9a17f45b2148291904 (diff)
downloadrneovim-1ca67a73c0ba680eb8328e68bea31f839855dd29.tar.gz
rneovim-1ca67a73c0ba680eb8328e68bea31f839855dd29.tar.bz2
rneovim-1ca67a73c0ba680eb8328e68bea31f839855dd29.zip
Merge pull request #12507 from tjdevries/tjdevries/viml_lua_callbacks
[RFC] Allow passing lua functions and closures into vim functions.
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r--src/nvim/eval.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 27c2ed1ea5..e1f9fe0253 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -7143,6 +7143,16 @@ bool callback_from_typval(Callback *const callback, typval_T *const arg)
func_ref(name);
callback->data.funcref = vim_strsave(name);
callback->type = kCallbackFuncref;
+ } else if (nlua_is_table_from_lua(arg)) {
+ char_u *name = nlua_register_table_as_callable(arg);
+
+ if (name != NULL) {
+ func_ref(name);
+ callback->data.funcref = vim_strsave(name);
+ callback->type = kCallbackFuncref;
+ } else {
+ r = FAIL;
+ }
} else if (arg->v_type == VAR_NUMBER && arg->vval.v_number == 0) {
callback->type = kCallbackNone;
} else {