aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2021-06-22 22:02:59 -0400
committerJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2021-06-23 23:16:20 -0400
commit4cb0bf09421e88adb812bb716b56af22bd51353e (patch)
treeed9c686270a620545f39a39cae5e8a00f1fe4ff2 /src/nvim/eval.c
parentd5329c0331a4e899ea88277b745df8d1bf3a99fa (diff)
downloadrneovim-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.c13
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;
}