diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2021-06-22 22:02:59 -0400 |
---|---|---|
committer | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2021-06-23 23:16:20 -0400 |
commit | 4cb0bf09421e88adb812bb716b56af22bd51353e (patch) | |
tree | ed9c686270a620545f39a39cae5e8a00f1fe4ff2 /src/nvim/eval.c | |
parent | d5329c0331a4e899ea88277b745df8d1bf3a99fa (diff) | |
download | rneovim-4cb0bf09421e88adb812bb716b56af22bd51353e.tar.gz rneovim-4cb0bf09421e88adb812bb716b56af22bd51353e.tar.bz2 rneovim-4cb0bf09421e88adb812bb716b56af22bd51353e.zip |
vim-patch:8.2.1255: cannot use a lambda with quickfix functions
Problem: Cannot use a lambda with quickfix functions.
Solution: Add support for lambda. (Yegappan Lakshmanan, closes vim/vim#6499)
https://github.com/vim/vim/commit/d43906d2e5969288f239df851f5ad7b1dc2c7251
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r-- | src/nvim/eval.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 7e462e568b..1b78147ec2 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -7200,12 +7200,15 @@ bool callback_from_typval(Callback *const callback, typval_T *const arg) r = FAIL; } else if (arg->v_type == VAR_FUNC || arg->v_type == VAR_STRING) { char_u *name = arg->vval.v_string; - if (name != NULL) { + if (name == NULL) { + r = FAIL; + } else if (*name == NUL) { + callback->type = kCallbackNone; + callback->data.funcref = NULL; + } else { func_ref(name); callback->data.funcref = vim_strsave(name); callback->type = kCallbackFuncref; - } else { - r = FAIL; } } else if (nlua_is_table_from_lua(arg)) { char_u *name = nlua_register_table_as_callable(arg); @@ -7216,8 +7219,10 @@ bool callback_from_typval(Callback *const callback, typval_T *const arg) } else { r = FAIL; } - } else if (arg->v_type == VAR_NUMBER && arg->vval.v_number == 0) { + } else if (arg->v_type == VAR_SPECIAL + || (arg->v_type == VAR_NUMBER && arg->vval.v_number == 0)) { callback->type = kCallbackNone; + callback->data.funcref = NULL; } else { r = FAIL; } |