summaryrefslogtreecommitdiffstats
path: root/src/evalvars.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-07-20 21:31:32 +0200
committerBram Moolenaar <Bram@vim.org>2020-07-20 21:31:32 +0200
commitd43906d2e5969288f239df851f5ad7b1dc2c7251 (patch)
treea3d3f8f6cefa3f05e63aa15445e3cb1bab03d3fb /src/evalvars.c
parent470adb827f3d9e6cf62f685738d2db216daf3738 (diff)
patch 8.2.1255: cannot use a lambda with quickfix functionsv8.2.1255
Problem: Cannot use a lambda with quickfix functions. Solution: Add support for lambda. (Yegappan Lakshmanan, closes #6499)
Diffstat (limited to 'src/evalvars.c')
-rw-r--r--src/evalvars.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/evalvars.c b/src/evalvars.c
index 197a19dd1d..e2469b0e82 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -3849,6 +3849,27 @@ set_callback(callback_T *dest, callback_T *src)
}
/*
+ * Copy callback from "src" to "dest", incrementing the refcounts.
+ */
+ void
+copy_callback(callback_T *dest, callback_T *src)
+{
+ dest->cb_partial = src->cb_partial;
+ if (dest->cb_partial != NULL)
+ {
+ dest->cb_name = src->cb_name;
+ dest->cb_free_name = FALSE;
+ ++dest->cb_partial->pt_refcount;
+ }
+ else
+ {
+ dest->cb_name = vim_strsave(src->cb_name);
+ dest->cb_free_name = TRUE;
+ func_ref(src->cb_name);
+ }
+}
+
+/*
* Unref/free "callback" returned by get_callback() or set_callback().
*/
void